链表 程序秒退 怎么回事
#include "stdafx.h"#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define OK 1;
#define ERROR -1;
typedef struct
{
char no[8]; //8位学号
char name[20]; //姓名
int price; //成绩
}Student;
typedef struct LNode
{
Student data; //数据域
struct LNode *next; //指针域
}LNode,*LinkList;
struct LINK_LIST //定义链表类型
{
LNode *head;
};
void creatStudent(LINK_LIST*L);
int main()
{
printf("**********************************************\n");
printf("|欢迎使用学生信息管理系统|\n");
printf("**********************************************\n");
while (1)
{
printf("\n请选择功能列表:");
printf("\n===============");
printf("\n1.录入学生信息");
printf("\n2.打印学生信息");
printf("\n3.根据姓名查找学生信息");
printf("\n4.根据位置查找学生信息");
printf("\n5.插入学生信息");
printf("\n6.修改学生信息");
printf("\n7.删除学生信息");
printf("\n8.统计所有学生人数") ;
printf("\n0.退出系统");
printf("\n===============\n");
int choice;
scanf_s("%d",&choice);
switch(choice)
{
LINK_LIST NL;
case 1:creatStudent(&NL);break;
/*case 2:printfStudent();break;
case 3:findStudent();break;
case 4:readStudent();break;
case 5:addStudent();break;
case 6:changeStudent();break;
case 7:deleateStudent();break;
case 8:printf("学生的总人数为%d", countStudent());break;
case 0:return 0;break;*/
default:break;
}
}
return 0;
}
void creatStudent(LINK_LIST*L)
{
L->head=(LNode*)malloc(sizeof(LNode));
L->head->next=NULL;
LNode *p,*r;//r为尾指针
r=L->head;
int n;
printf("请输入学生人数:\n");
scanf_s("%d",&n);
for(int i=0;i<n;i++)
{
p=(LNode*)malloc(sizeof(LNode));
printf("请输入学生学号");
scanf_s("%s",p->data.no);
printf("请输入学生姓名");
scanf_s("%s",p->data.name);
printf("请输入学生成绩");
scanf_s("%d",p->data.price);
p->next=NULL;
r->next=p;
r=p;
}
}
为什么程序会秒退出来,求解