c语言链式线性表函数,线性表的链式存储,可以输入数据,但浏览函数一直没反应。...

这篇博客讨论了C++中链表的链式存储结构,包括初始化链表、浏览链表、插入元素和删除元素等基本操作的实现。代码示例展示了如何创建一个学生信息管理系统的菜单,允许用户选择浏览、插入和删除学生信息。在实际运行中,浏览功能似乎没有响应,可能是由于代码中的错误导致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

已结贴√

问题点数:20 回复次数:6

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

线性表的链式存储,可以输入数据,但浏览函数一直没反应。

#include

#include

#include

#define ElemType student

typedef struct{           //定义结构体

char sno[9];

char name[9];

char sex;

char major[20];

}student;

typedef struct LNode

{

ElemType data;

struct LNode * next;

}LNode,*Linklist;          //定义一个节点 和 一个头指针

int Initlist(Linklist *L)

{

*L=(LNode *)malloc(sizeof(LNode));    //向系统申请一个头节点

if(*L==NULL)

{

printf("分配失败");

return 0;

}

(*L)->next=NULL;

return 1;

}

int traverse_list(Linklist L)               //浏览链表

{

LNode *p;

p=L->next;

if(p=NULL)

{

printf("链表为空");

}

else

{

printf("显示所以的学生信息");

while(p!=NULL)

{  printf("学生学号:%s,学生姓名:%s,学生性别:%c,学生专业:%s",p->data.sno,p->data.name,p->data.sex,p->data.major);

p=p->next;

}

}

return 1;

}

int inset_list(Linklist L,int i,ElemType e)  //插入函数

{

LNode * p,* s;

int j;

p=L;j=0;

while(p&&(j

{

p=p->next;

++j;

}

s=(LNode*)malloc(sizeof(LNode));

s->data=e;

s->next=p->next;

p->next=s;

return 1;

}

int delete_list(Linklist L,int i)    //删除函数

{

Linklist p=L,q;

int j=0;

while((p->next)&&(j

{

p=p->next;

++j;

}

q=p->next;

p->next=q->next;

free(q);    //手动释放q

return 1;

}

int menu_select()

{

char c;

do{

system("cls");

printf("\n ***********学生信息管理系统*****************");

printf("\n ***        1、浏览学生信息               ***");

printf("\n ***        2、增加学生信息               ***");

printf("\n ***        3、查找学生信息               ***");

printf("\n ***        4、统计学生信息               ***");

printf("\n ***        5、插入学生信息               ***");

printf("\n ***        6、删除学生信息              ***");

printf("\n ***        0、退出系统                   ***");

printf("\n*********************************************\n");

c=getchar();

}while(c'6');

return(c-'0');

}

void main()

{

int loc;

ElemType e;

LNode * LL;

Initlist(&LL);

while(1)

{switch(menu_select())

{

case 1:

printf("此功能可以实现浏览学生信息\n");

traverse_list(LL);

system("pause");break;

case 2:

printf("此功能可以实现增加学生信息\n");

system("pause");break;

case 3:

printf("此功能可以实现查找学生信息\n");

system("pause");break;

case 4:

printf("此功能可以实现统计学生信息\n");

system("pause");break;

case 5:

printf("此功能可以实现插入学生信息,并且一次可以插入一个元素\n");

printf("请输入要插入元素的位置");

scanf("%d",&loc);

printf("请输入学生信息");

printf("请输入学生学号");   scanf("%s",&e.sno);

printf("请输入学生姓名");   scanf("%s",&e.name);

printf("请输入学生性别");   scanf("%c",&e.sex);

printf("请输入学生专业");   scanf("%s",&e.major);

inset_list(&LL,loc,e);             //这里为什么加入&

system("pause");break;

case 6:

printf("此功能可以实现删除学生信息,并且一次只能删除一个元素\n");

printf("请输入要删除元素的位置");

scanf("%d",&loc);

delete_list(&LL,loc);             //这里为什么加入&

system("pause");break;

case 0:

printf("谢谢使用本系统/n");

exit(0);

}

}

}

另外delete_list(&LL,loc); 和inset_list(&LL,loc,e); 用不用加&   ?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值