【发布时间】:2017-05-23 11:19:16
【问题描述】:
请帮助我不知道错误在哪里。我遇到分段错误。我使用代码块作为 IDE。我是编程新手,这是我第一次尝试创建链表。 我猜我的推送功能有问题,但我找不到。
#include<stdio.h>
#include<stdlib.h>
typedef struct list
{
int val;
struct list* next;
} node;
int main()
{
node* top;
top = NULL;
int i;
int n,m;
while(1)
{
fflush(stdin);
printf("Please enter i\n");
scanf("%d", i);
switch(i)
{
case 1:
{
printf("\nenter val");
scanf("%d", &n);
top=push(n, top);
}
case 2:
{
m = pop(top);
printf("Deleted value is %d", m);
}
case 3:
{
return 0;
}
}
}
}
node* push(int a,node* s)
{
if(s==NULL)
{
s = malloc(sizeof(node));
s->val = a;
s->next = NULL;
return s;
}
else
{
node* temp;
temp = malloc(sizeof(node));
temp->val = a;
temp->next = s;
s = temp;
return s;
}
}
node* pop(node* s)
{
int x;
node* temp;
x = s->val;
printf("deleted value is %d", x);
temp = s->next;
s->next = NULL;
free(s);
s = temp;
return s;
}
【问题讨论】:
-
scanf("%d",i);-->scanf("%d", &i); -
@BLUEPIXY 永远不会变老 :)
-
并添加一些
break;到开关。 (并去掉多余的{}) -
对不起,如果我的编辑与
case括号混淆,但由于它们被另一个外部编辑删除,我觉得我应该保留它们在原始代码中的样子。 -
修复this
标签: c linked-list stack