asvyr Ответов: 1

Могу ли я написать функцию для создания новых узлов?


Поэтому я хотел создать программу,которая создает x узлов со значениями 1,2,3.., x, а затем печатает их значения, но я не могу заставить ее работать. Возможно ли это вообще?

Что я уже пробовал:

#include <iostream>


class node
{

public:

	int val;
	node * next;

};

void NewNode(node *H, int i) //I tried using &H but then my p->next=H doesn't work
{

	node *p = new node;

	p->val = i;
	p->next = H;
	H = p;

}

void DisplayNodes(node *H)
{

	node *p = new node;

	p = H;


	while (p != NULL)
	{

		std::cout << p->val << " ";
		p = p->next;

	}

}


int main()
{

	node *H = NULL;

	int x;
	std::cin >> x;

	std::cout << std::endl << std::endl;


	for (int i = 0; i < x; i++)
	{

		NewNode(H, i);

	}


	DisplayNodes(H);


	system("PAUSE");

}

1 Ответов

Рейтинг:
4

Richard MacCutchan

void NewNode(node *H, int i) //I tried using &H but then my p->next=H doesn't work
{
	node *p = new node; // OK

	p->val = i; // OK
	p->next = H;  // OK
	H = p;  // Oops, you are only changing the local parameter variable H.
                // The original is unchanged.

}

Это было бы лучше сделать
void NewNode(node *H, int i) //I tried using &H but then my p->next=H doesn't work
{
	node *p = new node;

	p->val = i;
	p->next = NULL;
	H->next = p; // put the new node at the end, rather than the beginning

}

Вам также потребуется изменить логику вашей работы. main функция.