Surya Gaurav Ответов: 1

Как остановить бесконечную итерацию, происходящую в следующей программе связанного списка ?


Вот код, который я создал для создания и печати связанного списка в c.я ввел данные от 1 до 5, и когда он начинает печатать числа, он продолжает печатать 5, пока я каким-то образом не завершу программу. Какова может быть возможная ошибка в написанном коде ?
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
 	 int data;
 	 struct node *link;
}list;
void createList(){
	 list *start=NULL;
	 char ch;
     do{
		 list *ptr, *cpt;
		 ptr=(list*)malloc(sizeof(list));
		 printf("Enter data\n");
		 scanf("%d",&ptr->data);
		 ptr->link=NULL;
         if(start==NULL){
			 start=ptr;
			 cpt=ptr;
		   }
		 else{
			 cpt->link=ptr;
			 cpt=ptr;
		 }
         printf("Do you want more : ");
		 ch=getche();
		 printf("\n");
	  }while(ch!='n');
 }
void traverseNode(){
	  list *ptr, *start;
	  ptr=start;
	  while(ptr!=NULL){
		  printf("%d ",ptr->data);
		  ptr->link=ptr;
		}
  }
void main(){
	 createList();
	 traverseNode();
   }


Что я уже пробовал:

Я попытался изменить функцию и поместить код в main, но все равно безрезультатно.
Попытался сделать функции типа int, но все равно застрял.

Mohibur Rashid

Ваша функция traverseNode должна была потерпеть неудачу. Вы объявили start без установки какого-либо значения.

1 Ответов

Рейтинг:
0

Patrice T

Цитата:
когда он начинает печатать цифры, он продолжает печатать 5

Возможно ли, что link из 5 указывает свой собственный узел ?
Используйте отладчик для отслеживания того, что делает ваша программа.

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

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
Когда код не делает того, что ожидается, вы близки к ошибке.