建立学生数据c语言链表,严蔚敏版数据结建立学生信息单链表C语言版适合VC++.doc...

严蔚敏版数据结建立学生信息单链表C语言版适合VC

#include

#include

#include

typedef struct Student/*定义学生类 */

{

int num;

char name[20];

char sex[2];

int age;

float grade;

}stu;

typedef struct LNode

{

stu data;

struct LNode *next;

}LNode,* Linklist;

Linklist InitList_L(Linklist L)/*构造一个空的单向链表*/

{

L=(Linklist)malloc(sizeof(stu));

if(!L)

printf("ERROR\n");

else

{

L=NULL;

printf("OK\n");

return L;

}

}

void DestroyList_L(Linklist L)//销毁单向链表 */

{

Linklist p;

if(!L)

printf("ERROR\n");

else

{

while(L)

{

p=L;

L=L->next;

free(p);

}

printf("OK\n");

}

}

void ClearList_L(Linklist L)/*将L重置为空表*/

{

Linklist p;

if(!L)

printf("ERROR\n");

else

{

while(L->next)

{

p=L->next;

L->next=p->next;

free(p);

}

printf("OK\n");

}

}

void ListEmpty_L(Linklist L)/*L为空表返回TRUE,否则返回FALSE*/

{

if(!L)

printf("ERROR\n");

else

{

if(!L->next)

printf("TRUE\n");

else

printf("FLASE\n");

}

}

int ListLength_L(Linklist L)/*返回L中数据元素个数*/

{

int i=0;

Linklist p=L;

if(!L)

return 0;

else

{

while(p)

{

i++;

p=p->next;

}

return i;

}

}

void GetElem_L(Linklist L,int i)//返回第i个元素的值 */

{

Linklist p=L;

int j=1;

while(p!=NULL&&j

{

p=p->next;

++j;

}

if(!p||j>i)

printf("ERROR\n");

else

{

printf("学生%d的数据为 :\n",i);

printf("学号:%d\n姓名:%s\n性别:%s\n年龄:%d\n成绩:%f\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.grade);

printf("OK\n");

}

}

void PriorElem_L(Linklist L,stu cur_e)/*用pre_e返回cur_e的前驱 */

{

Linklist p=L;

while(p->next&&(p->next->data).num!=cur_e.num)

p=p->next;

if(!p->next)

printf("ERROR\n");

else

{

printf("cur_e的前驱为:\n");

printf("num:%d\nname:%s\nsex:%s\nage:%d\ngrade:%f\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.grade);

printf("OK\n");

}

}

void NextElem_L(Linklist L,stu cur_e)/*用next_e返回cur_e的后驱*/

{

Linklist p=L;

while(p&&(p->data).num!=cur_e.num)

p=p->next;

if(!p||!p->next)

printf("ERROR\n");

else

{

printf("cur_e的后驱为:\n");

printf("num:%d\nname:%s\nsex:%s

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值