单链表

来源:互联网 发布:模仿台词的软件 编辑:程序博客网 时间:2024/06/05 08:59
/*1. 根据指定学生个数,逐个输入学生信息2.逐个显示学生表中所有学生的相关信息3.根据姓名进行查找,返回此学生的学号和成绩4.根据指定的位置可返回相应的学生信息(学号,姓名,成绩)5.给定一个学生信息,插入到表中指定的位置6.删除指定位置的学生记录7.统计表中学生个数*/#include <stdio.h>#include <stdlib.h>#include<string.h>typedef int bool;//1-true 0-falsetypedef struct{char num[8];char name[20];int score;}Student;//链表的定义typedef struct LNode{Student data;//数据域struct LNode *next;//指针域}LNode,*LinkList;LinkList CreateList_R();//后插法 void DestoryList(LinkList L);void PrintList(LinkList L);bool LocateName(LinkList L,char name[]);void LocateInt(LinkList L,int i);bool ListInsert(LinkList L,int i,Student e);bool DeleteList(LinkList L,int i);void ListLength(LinkList L);////////////void main(){Student stu;LinkList head;int i;///head=CreateList_R();//指定学生数量,逐个输入///PrintList(head);//逐个显示全部信息///printf("To Locate please input stuName:");//根据姓名查找scanf("%s",stu.name);LocateName(head,stu.name);///printf("To locate please input NO.:");//指定位置查找scanf("%d",&i);LocateInt(head,i);///printf("To insert please input NO. and LNode(num,name,score):");//指定位置插入scanf("%d%s%s%d",&i,stu.num,stu.name,&stu.score);ListInsert(head,i,stu);PrintList(head);////printf("To delete please input NO.:");//指定位置删除scanf("%d",&i);DeleteList(head,i);PrintList(head);////ListLength(head);//统计人数system("pause");///DestoryList(head);}/////////////LinkList CreateList_R(){LinkList L,r,p;int i,n;L=(LinkList)malloc(sizeof(LNode));L->next=NULL;r=L;printf("please input student number:");scanf("%d",&n); for(i=0;i<n;i++){p=(LinkList)malloc(sizeof(LNode));printf("Please input Node_data<num name score>:");scanf("%s%s%d",p->data.num,p->data.name,&p->data.score);r->next=p;p->next=NULL;r=p; }return L;}//返回头指针 void DestoryList(LinkList L){LinkList p=L,r;while(p->next){r=p->next;free (p);p=r;}free (p);printf("destory success\n");}void PrintList(LinkList L){LinkList p=L->next;printf("---------------------\n");printf("num\tname\tscore\n");while(p){printf("%s\t%s\t%d\n",p->data.num,p->data.name,p->data.score);p=p->next;}printf("---------------------\n");} bool LocateName(LinkList L,char name[]){LinkList p=L->next;while(strcmp(p->data.name,name)){p=p->next;if(p==NULL) return 0;//error} printf("%s--\tnum:%s\tscore:%d\n",name,p->data.num,p->data.score);return 1;}void LocateInt(LinkList L,int i){LinkList p=L->next;int j=1;while(p->next&&j<i){//i越界将会打印最后一个 p=p->next;++j;}printf("NO.%d\tnum:%s\tname:%s\tscore:%d\n",i,p->data.num,p->data.name,p->data.score);}void ListLength(LinkList L){LinkList p=L->next;int i=0;while(p){++i;p=p->next;}printf("Student Number is:%d\n",i);}bool DeleteList(LinkList L,int i){LinkList p=L,r;int j=0;while(p->next&&j<i-1){p=p->next;++j;}if((!p->next)||(j>i-1)) return 0;//errorr=p->next;p->next=r->next;free (r);return 1;}bool ListInsert(LinkList L,int i,Student e){LinkList p=L,s;int j=0;while(p&&(j<i-1)){p=p->next;++j;}if(!p||j>i-1) return 0;errors=(LinkList)malloc(sizeof(LNode));s->data=e;s->next=p->next;p->next=s;return 1;}


 
原创粉丝点击