打印功能无法正常工作 - 链表
Posted
技术标签:
【中文标题】打印功能无法正常工作 - 链表【英文标题】:Print function isn't working properly- Linked list 【发布时间】:2020-02-01 10:26:58 【问题描述】:我是数据结构的新手,我正在尝试编写一个将节点添加到链表开头的代码。每次用户输入一个新节点后,程序应该显示一个更新链表,但我的程序只显示当前输入的节点。
代码如下:-
#include<iostream.h>
#include<conio.h>
struct Node
int data;
Node* next;
;
struct Node* head;
void Insert(int x)
Node* temp=new Node();
temp->data=x;
temp->next=NULL;
head=temp;
void Print()
struct Node* temp=head;
cout<<"List is: ";
while(temp!=NULL)
cout<<temp->data;
temp=temp->next;
cout<<"\n";
void main()
head=NULL;
clrscr();
cout<<"How many numbers?\n";
int n,x,i;
cin>>n;
for(i=0; i<n; i++)
cout<<"Enter the number \n";
cin>>x;
Insert(x);
Print();
getch();
【问题讨论】:
是什么让您认为打印功能有问题?你为什么不怀疑例如插入函数? 插入节点后,head
指向新节点,新节点的next
指针为空。列表中有多少个元素?
@ALOKKUMAR 看看答案,接受最适合你的那个
【参考方案1】:
您的Insert
方法错误。您需要将head
分配给next
:
void Insert(int x)
Node* temp=new Node();
temp->data=x;
temp->next=head;
head=temp;
这将正确链接您的列表。
【讨论】:
【参考方案2】:您的Insert
函数错误。您需要使用类似这样的东西才能在列表末尾添加新项目:
void InsertAtTheEnd(int x)
Node* temp = new Node();
temp->data=x;
temp->next=NULL;
if (NULL == head)
head = temp;
else
Node *tmp = head;
while (tmp->next != NULL)
tmp = tmp->next;
tmp->next = temp;
这会将它们添加到开头:
void InsertAtTheBeginning(int x)
Node* temp=new Node();
temp->data=x;
temp->next=head;
head=temp;
看看live
【讨论】:
非常感谢!我通过你的回答找到了解决办法 @ALOKKUMAR 您可能想要投票并接受我的回答(选票下方的绿色勾号)以上是关于打印功能无法正常工作 - 链表的主要内容,如果未能解决你的问题,请参考以下文章