打印功能无法正常工作 - 链表

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 您可能想要投票并接受我的回答(选票下方的绿色勾号)

以上是关于打印功能无法正常工作 - 链表的主要内容,如果未能解决你的问题,请参考以下文章

我想知道为什么我的搜索电话簿功能无法正常工作

如何使用窗口打印功能打印条形码标签?

事件内部功能无法正常工作

Xcode 9 自动完成无法正常工作

@media 打印在 Chrome 中无法正常工作

打印机有打印任务但不工作是为啥?