资源描述:
《严蔚敏版数据结构学生信息循环单链表》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include#include#includetypedefstructStudent/*定义学生类*/{intnum;charname[20];charsex[2];intage;floatgrade;}stu;typedefstructLNode{studata;structLNode*next;}LNode,*Linklist;LinklistInitList_L()/*构造一个空的单向循环链表*/{LinklistL;L=(Linklist)malloc(sizeof(stu));if(!L)printf("ERROR")
2、;else{L->next=L;printf("OK");}return(L);}voidDestroyList_L(LinklistL)/*销毁单向循环链表*/{Linklistp;if(!L)printf("ERROR");else{while(L->next!=L){p=L->next;L->next=p->next;free(p);}free(L);printf("OK");}}voidClearList_L(LinklistL)/*将L重置为空表*/{Linklistp;if(!L)printf("ERROR");else{while(L->next!=L){p=L-
3、>next;L->next=p->next;free(p);}printf("OK");}}voidListEmpty_L(LinklistL)/*L为空表返回TRUE,否则返回FALSE*/{if(!L)printf("ERROR");else{if(L->next==L)printf("TRUE");elseprintf("FLASE");}}intListLength_L(LinklistL)/*返回L中数据元素个数*/{inti=0;Linklistp=L->next;if(!L)printf("表不存在.");else{while(p!=L){i++;p=p->n
4、ext;}returni;}}voidGetElem_L(LinklistL,inti)/*返回第i个元素的值*/{Linklistp=L->next;intj=1;while(p!=L&&jnext;++j;}if(p==L
5、
6、j>i)printf("ERROR");else{printf("第%d个学生的数据为:",i);printf("学号:%d姓名:%s性别:%s年龄:%d成绩:%f",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.grade);printf("OK")
7、;}}voidPriorElem_L(LinklistL,stucur_e)/*返回cur_e的前驱*/{Linklistp=L;while(p->next&&(p->next->data).num!=cur_e.num)p=p->next;if(p->next==L
8、
9、p==L)printf("ERROR");else{printf("cur-e的前驱的数据为:");printf("学号:%d姓名:%s性别:%s年龄:%d成绩:%f",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.grade);p
10、rintf("OK");}}voidNextElem_L(LinklistL,stucur_e)/*用next_e返回cur_e的后驱*/{Linklistp=L->next;while(p&&(p->data).num!=cur_e.num)p=p->next;if(p==L
11、
12、p->next==L)printf("ERROR");else{printf("cur-e的后驱的数据为:");printf("学号:%d姓名:%s性别:%s年龄:%d成绩:%f",p->next->data.num,p->next->data.name,p->next->data.s
13、ex,p->next->data.age,p->next->data.grade);printf("OK");}}voidListInsert_L(LinklistL,inti)/*在i位置之前插入新元素*/{intj=1;Linklistp=L->next,s;if(i==1){s=(Linklist)malloc(sizeof(LNode));printf("请输入要插入学生元素的数据: