超难的链表
#include<stdio.h>#include<stdlib.h>
#include<string.h>
typedef struct STU{
char name;
float score;
STU *next;
} Stu,*Nstu;
void add_node(Nstu head);
void delete_node();
void display_node();
void modify_node();
void quit();
int operateinit(Nstu head);
int main(void)
{
Nstu head=NULL;
head=(Nstu)malloc(sizeof(Stu));
operateinit(head);
}
int operateinit(Nstu head)
{
while(1)
{
int in;
printf("*********************\n");
printf("1. 增加一个学生信息。\n");
printf("2. 删除一个学生信息。\n");
printf("3. 显示所有学生信息。\n");
printf("4. 修改一个学生信息。\n");
printf("5. 退出。\n");
printf("*********************\n");
printf("请输入你需要的操作数字(1~5):");
scanf("%d",&in);
printf("\n");
switch(in)
{
case 1:add_node(head);
break;
case 2:delete_node();
break;
case 3:display_node();
break;
case 4:modify_node();
break;
case 5:quit();
return 0;
}
printf("\n");
}
}
void add_node(Nstu head)
{
Nstu ptr=NULL;
ptr=(Nstu)malloc(sizeof(Stu));
printf("请输入学生姓名:");
scanf("%s",ptr->name);
printf("请输入学生成绩:");
scanf("%f",&ptr->score);
printf("\n");
//Nstu prev=head;
Nstu temp=head;
while(temp->next!=NULL)
{
// prev=current;
temp=temp->next;
}
temp->next=ptr;
ptr->next=NULL;
// prev->next=ptr;
}
void delete_node()
{
}
void display_node()
{
}
void modify_node()
{
}
void quit()
{
}
我刚输入完成绩,没等下一次输入,程序就死机了,那里出问题了? 卤煮,把错误截图出来吧?!
main里边,head->next = NULL; 加上这一句 比较靠谱,因为你后边会用到 - - 围观,看不太懂 你main函数里面malloc()的空间没用呀,反倒是造成head->next 不一定为NULL, 这样add函数里while循环判断可能有错误。
页:
[1]