我正在努力了解链接列表并且遇到困难。我想在一个节点中放入三个元素,然后打印出多个节点。但是,我只能打印节点的第一个元素。 例如: 输入:1,2,3 输出:1 NULL
struct node
{
int Intx, Inty, Intz;
struct node *p;
}
class linked
{
public:
node* create_node(int first, int second, int third);
int Intx, Inty, Intz;
void insert();
void display();
}
main()
{
linked sl;
sl.insert();
sl.display();
}
node *linked::create_node(int first, int second, int third)
{
Intx = first;
Inty = second;
Intz = third;
struct node *temp, *p;
temp = new (struct node);
if (temp == NULL)
{
cout << "Not able to complete";
}
else
{
temp->Intx = first, Inty = second, Intz = third;
temp->next = NULL;
return temp;
}
}
void linked::insert()
{
int Intx, Inty, Intz;
cout << "Enter First Element for node: ";
cin >> Intx;
cout << "Enter Second Element for node: ";
cin >> Inty;
cout << "Enter Third Element for node: ";
cin >> Intz;
struct node *temp, *s;
temp = create_node(Intx, Inty, Intz);
if (start == NULL)
{
start = temp;
start->next = NULL;
}
else
{
s = start;
start = temp;
start->next = s;
}
cout << "Element Inserted." << endl;
}
void linked::display()
{
struct node *temp;
cout << "Elements of list are: " << endl;
while (temp != NULL)
{
cout << temp->Intx, Inty, Intz;
temp = temp->next;
}
cout << "NULL" << endl;
}
答案 0 :(得分:0)
而不是讨论代码中的错误。我宁愿建议你理解链表算法背后的逻辑。这会帮助你成长。
链接Link1: Youtube tut和Link 2将为您提供链接列表算法的基本工作方式。
由于程序是使用C ++编写的。 Link 1是一个youtube教程,使用C ++编程逐步提供visual studio中的每个链表操作。这可能有助于您了解->
运算符的正确使用。此外,它还可以帮助您理解对象与其成员之间的关系。
虽然Link 2仅对链接列表作为数据结构如何增长以及如何维护它的理论方面有所帮助。
答案 1 :(得分:0)
temp-> Intx = first, Inty = second, Intz = third;
用逗号分隔东西不会做你认为它在这里做的事情。您应该使用三个语句,并且必须在每个语句中包含temp->
:
temp->Intx = first;
temp->Inty = second;
temp->Intz = third;
如果您真的想使用逗号运算符,则可以,但在所有三个分配中仍然需要temp->
。
同样,您在display
中使用的逗号不能做您想做的事情
cout<< temp->Intx, Inty, Intz;
应该是
cout<< temp->Intx << "," << temp->Inty << "," << temp->Intz;
或类似的东西,取决于你想要格式化的方式