Функция печати не работает должным образом - связанный список - PullRequest
0 голосов
/ 01 февраля 2020

Я новичок в структурах данных, и я пытался написать код, который добавляет узлы в начало связанного списка. После каждого входа пользователя в новый узел программа должна отображать связанный список обновлений, но моя программа отображает только текущий введенный узел.

Код выглядит следующим образом: -

#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(); 
}

Ответы [ 2 ]

0 голосов
/ 01 февраля 2020

Ваша 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;
}

Проверьте это живой

0 голосов
/ 01 февраля 2020

Ваш Insert метод неверен. Вам нужно назначить head для next:

void Insert(int x) 
{
  Node* temp=new Node();
  temp->data=x;
  temp->next=head;
  head=temp;
}

. После этого ваш список будет правильно добавлен в цепочку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...