-1
Код компилируется просто отлично, но когда я пытаюсь всплывать или отображать сдвинутые целочисленные значения, он сбой! Спасибо заранее за то, что помогли мне.Почему эта программа укладки с использованием связанного списка не работает?
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node* next;
}*top=NULL;
void push(int);
void pop();
void display();
void main()
{
int choice,value;
while(1){
printf("\n-----MENU-----\n");
printf("\n1. Push\n2. Pop\n3. Display\n4. Exit");
printf("\nEnter your choice\n");
scanf("%d",&choice);
switch(choice)
{
case 1: printf("Enter a number to push\n");
scanf("%d",&value);
push(value);
break;
case 2: pop();
break;
case 3: display();
break;
case 4: exit(0);
}}
getch();
}
ФУНКЦИЯ PUSH ЗНАЧЕНИЯ
void push (int value)
{
struct node*newnode;
newnode = (struct node*)malloc(sizeof(struct node));
newnode->data=value;
if(top==NULL){
newnode->next=NULL;
}
else
{
newnode->next=top;
top=newnode;
printf("Insertion successful\n");
}
}
ФУНКЦИЯ POP ЗНАЧЕНИЯ ИЗ СПИСКА
void pop()
{
if (top==NULL)
{
printf("Nothing to delete");
}
else{
struct node *temp=top;
printf("Deleted element %d", temp->data);
top=temp->next;
free(temp);
}}
функция отображения СТеке ЭЛЕМЕНТОВ
void display()
{
if(top==NULL)
{
printf("List is empty\n");
}
else
{
struct node *temp=top;
while(temp->next!=NULL)
{
printf("%d",temp->data);
temp=temp->next;
}
printf("%d ----->NULL", temp->data);
}
}
Используйте отладчик. Это лучший способ отладить такие проблемы. – kaylum
Добавить конец '\ n' в' printf' (или вызвать 'fflush (NULL);'). Скомпилируйте все предупреждения и информацию об отладке ('gcc -Wall -g'). ** Используйте отладчик ** 'gdb' для запуска программы шаг за шагом. Используйте также [valgrind] (http://valgrind.org/) –
'if (top == NULL) { newnode-> next = NULL;' -> 'if (top == NULL) { newnode-> следующая = NULL; top = newnode; 'или' newnode-> next = top; top = newnode; printf ("Вставка успешно \ n"); } '->' newnode-> next = top; } top = newnode; printf («Вставка успешно \ n»); ' – BLUEPIXY