Элементы узла не печатаются в программе Single Linked List

Я создал здесь C-программу в TurboC++. Эта простая цель программы состоит в том, чтобы просто создать связанный список, вставить каждый элемент в конец списка, а затем распечатать значение узлов.(Отредактировано Программа несколько изменена, чтобы мне было легче понять, но проблема все еще в существуют узлы, которые не печатаются) Проблема в том, что некоторые элементы узла не печатаются

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<ctype.h>
#include<conio.h>
struct node
{
  int data;
  struct node *link;
};
typedef struct node ND;
void main()
{
  ND *start,*current,*temp;
  start=NULL;
  do
  {
    temp=(ND*)malloc(sizeof(ND));
    printf("\n Enter Node Value");
    scanf(" %d",&temp->data);
    temp->link=NULL;
    if(start==NULL)
    {
      start=current=temp;
    }
    else
    {
      current->link=temp;
      current=temp;
    }
    fflush(stdin);
    printf("\nDo You Want TO Continue?(Y/N)");
  }while(toupper(getchar())!='N');
  current=start;
  printf("\nThe Elements OF Linked List ARE:");
  while(current!=NULL)
  {
    printf(" %d",current->data);
    current=current->link;
  }
}

2 ответа

Вы печатаете список с неправильного элемента. Вы должны начать с головы. лайк:

temp1 = head;
while(temp1!=NULL)
{
  printf(" %d",temp1->data);
  temp1=temp1->link;
}

Кстати, ваш головной элемент всегда будет NULL. Вот правильный способ добавить элементы в список:

if (head == NULL)
{
    head = temp;
}
else
{
    temp1 = head;
    while (temp1->link != NULL)
    {
        temp1 = temp1->link;
    }
    temp1->link = temp;
}

Программа теперь работает правильно, я внес некоторые изменения, чтобы облегчить понимание этой программы. Вот код:

#include<stdio.h>
#include<conio.h> 
struct node
{
  int data;
  struct node *link;
};
typedef struct node ND;
void main()
{
  ND *head,*tail,*temp1;
  int n;
  char ch;
  printf("\nEnter Data?(y/n)\n");
  scanf(" %c",&ch);
  fflush(stdin);
  if(ch=='y' || ch=='Y')
  {
    tail=(ND*)malloc(sizeof(ND));
    printf("\n Enter Node Value");
    scanf(" %d",&n);
    tail->data=n;
    tail->link=NULL;
    head=tail;
    printf("\nDo You Want TO Continue?(Y/N)");
    scanf(" %c",&ch);
    fflush(stdin);
  }
  while(ch=='y' || ch=='Y')
  {
    printf("\n Enter Node Value");
    scanf(" %d",&n);
    tail->link=(ND*)malloc(sizeof(ND));
    tail->link->data=n;
    tail->link->link=NULL;
    tail=tail->link;
    printf("\nEnter More Data?(y/n)\n");
    scanf(" %c",&ch);
    fflush(stdin);
  }
  printf("\nElements Of Linked List Are:");
  temp1=head;
  while(temp1!=NULL)
  {
    printf(" %d",temp1->data);
    temp1=temp1->link;
  }
  printf("\n");
  fflush(stdout);
  getch();
}
Другие вопросы по тегам