элементы, вставленные в связанный список, не отображаются - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь создать и вставить в односвязный список с 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);
}

Ответы [ 2 ]

1 голос
/ 16 марта 2020

В функции Display замените while(p->link!=NULL) на while(p != NULL). В противном случае вы не печатаете данные последнего узла.

0 голосов
/ 16 марта 2020

Порядок важен. Сначала напечатайте данные узла, а затем перейдите по ссылке. С вашим кодом, когда вы были в последнем узле, вы печатаете не данные, потому что у этого узла не будет ссылки, и это неверно.

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

}
...