【问题标题】:elements inserted in the linked list is not being displayed插入到链表中的元素未显示
【发布时间】:2020-03-16 14:14:34
【问题描述】:

我正在尝试通过使用用户定义的显示函数调用用户定义的函数插入和显示来创建并插入具有 2 个节点的单链表。预期产量:- 5 10 我得到的输出是:= 5 请帮忙。

#include<iostream>
#include<stdlib.h>
using namespace std;

struct list
{
    int data;
    struct list *link;
};
struct list *start=NULL;
int insert(int a)
{
    struct list *n,*t,*p;
    n= new list;
    n->data=a;
    n->link=NULL;
    if(start==NULL)
    {
        start=n;
    }
    else if(start!=NULL)
    {
        t=start;
        while(t->link!=NULL)
        {
            t=t->link;
        }
        t->link=n;
    }
    return(0);
}
int Display(struct list *p)
{ 

    while(p->link!=NULL)
    {
        cout<<p->data;
        p=p->link;
    }
    return(0);

}
int main()
{  
   insert(5);
   insert(10);
   Display(start);
   return(0);
}

【问题讨论】:

  • while (p-&gt;link != NULL) -- 你为什么要测试链接是否为NULL?问问自己应该在while 循环中测试什么。如果您将名称从link 更改为next,也许您会看到错误。
  • 正确填充起始节点,insert()中有问题

标签: c++ data-structures linked-list singly-linked-list


【解决方案1】:

Display 函数中,将while(p-&gt;link!=NULL) 替换为while(p != NULL)。否则,您不会打印最后一个节点的数据。

【讨论】:

    【解决方案2】:

    顺序很重要。先打印节点数据,然后遍历链接。 一旦您在最后一个节点中使用您的代码,您将不会打印数据,因为该节点没有链接,这是不正确的。

    int Display(struct list *p)
    { 
        cout<<p->data;
        while(p->link!=NULL)
        {
            p=p->link;
            cout<<p->data;
        }
        return(0);
    
    }
    

    【讨论】:

      猜你喜欢
      • 2018-08-02
      • 2018-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多