顺序表,链表实验报告.总结_第1页
顺序表,链表实验报告.总结_第2页
顺序表,链表实验报告.总结_第3页
顺序表,链表实验报告.总结_第4页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告实验目的: 学生管理系统(顺序表)实验要求:1.建表2.求表长3.插入4.查找5.删除6.列表7.退出源程序:#include #include #include#define MaxSize 1000typedefstructchar xh40;char xm40;int cj;DataType;/学生的结构typedef struct DataType dataMaxSize; /定义表的数据类型int length; /数据元素分别放置在data0 到 datalength-1当中 SqList;/表的结构void liebiao(SqList *L)/建立表格int k,n;c

2、har q;printf(请输入 , 输入学生的个数: n);fflush(stdin);scanf(%d,&n);for(k=0;kdatak.xh);printf(请输入学生名字 n);scanf(%s,L-datak.xm);printf(请输入学生成绩 n);scanf(%d,&L-datak.cj);L-length=n;void qb(SqList *L)/全部输出int k,w;for(k=0;klength;k+)w=k+1;printf(第%d位学生: ,w);printf(%s%s%dn,L-datak.xh,L-datak.xm,L-datak.cj);int cr(Sq

3、List *L,DataType *xs,int i)/插入信息int j;if(L-length=MaxSize)printf(没有 !);return 0;else if(iL-length)printf(程序溢出,不符合 );return 0;elsefor(j=L-length-1;j=i;j-)strcpy(L-dataj+1.xh,L-dataj.xh);strcpy(L-dataj+1.xm,L-dataj.xm);L-dataj+1.cj=L-dataj.cj;strcpy(L-datai.xh,xs-xh);strcpy(L-datai.xm,xs-xm);L-datai.c

4、j=xs-cj;L-length=L-length+1;return 0;int cz(SqList *L)/查找信息char xh40;char xm40;int cj;int i=0,u;printf(1、按学号查询n);printf(1、按姓名查询n);printf(1、按成绩查询n);printf(请选择: );fflush(stdin);scanf(%d,&u);if (u=1)printf(请输入要查找学生的学号:);scanf(%s,xh);for(i=0;ilength;i+)if(strcmp(L-datai.xh,xh)=0)return i;if (u=2)printf(

5、请输入要查找学生的姓名:);scanf(%s,xm);for(i=0;ilength;i+)if(strcmp(L-datai.xm,xm)=0)return i;if (u=3)printf(请输入要查找学生的成绩:);scanf(%s,cj);for(i=0;ilength;i+)if(L-datai.cj,&cj)return i;return -1;/*如果没找到,返回 -1int cz2(SqList *L) /删除查找的函数char xh40;char xm40;int i=0,h;printf(1、按学号删除n);printf(2、按姓名删除n);printf(请选择: );ff

6、lush(stdin);scanf(%d,&h);if (h=1)printf(请输入要删除学生的学号:);scanf(%s,xh);for(i=0;ilength;i+)if(strcmp(L-datai.xh,xh)=0)/判断输入和已知学号一样不return i;else if (h=2)printf(请输入要删除学生的姓名:);scanf(%s,xm);for(i=0;ilength;i+)if(strcmp(L-datai.xm,xm)=0)/判断输入姓名和已知姓名一样不return i;return -1;void sc(SqList *L)/删除函数int i,j;printf(

7、请先选择您要删除的学生信息的方式:n);scanf(%d,&j);i=cz2(L);if(i=-1)printf(没有查到要删除的学生信息);return;for(j=i;jlength;j+)/要删除学生以后的学生整体上调一位L-dataj.cj=L-dataj+1.cj;/就是后一个覆盖了前一个strcpy(L-dataj.xh,L-dataj+1.xh);strcpy(L-dataj.xm,L-dataj+1.xm);L-length-;printf(该学生信息已被删除!n);int bc(SqList *L)return (L-length);int main()/主体大函数int i

8、,k;SqList *L;/DataType *xs;定义顺序表的指针L=(SqList *)malloc(sizeof(SqList)*MaxSize);char q;ee:rewind(stdin);printf(学生管理系统n);/函数的各个结构printf(n);printf(n);printf(n);printf(建立表格请输入 1n);printf(求表长请输入 2n);printf(插入请输入 3n);printf(查找请输入 4n);printf(删除请输入 5n);printf(列表请输入 6n);printf(退出请按 0n);printf(请输入 );scanf(%c,&

9、q);if(q=1)rewind(stdin);liebiao(L);goto ee;if(q=2)rewind(stdin);bc(L);printf(共%d个学生 n,L-length);goto ee;if(q=3)rewind(stdin);printf(printf(tt插入n);请 输 入 要 添 加 的 学 生 信 息: n);xs=(DataType *)malloc(sizeof(DataType);printf(请输入学生学号 n);scanf(%s,xs-xh);printf(请输入学生名字 n);scanf(%s,xs-xm);printf(请输入学生成绩 n);sca

10、nf(%d,&xs-cj);printf(请输入要插入的位置:n);rewind(stdin);scanf(%d,&i);cr(L,xs,i);goto ee;if(q=4)rewind(stdin);printf(printf(查找查询学生信息n);n);i=cz(L);if(i!=-1)printf(%s%s%dn,L-datai.xh,L-datai.xm,L-datai.cj);elseprintf(信息不存 );goto ee;if(q=5)rewind(stdin);printf(printf(删除删除学生信息n);n);sc(L);goto ee;if(q=6)rewind(st

11、din);printf(列表n);qb(L);goto ee;if(q=0) printf(谢谢使用 n);if(!(q=1|q=2|q=3|q=4|q=5|q=5|q=0)goto ee;system (pause);return 0;主程序:建表求表长插入查找删除列表输入 1-6n=1n=2n=3n=4n=5n=6退出建表:输入学生个数n,变量 kk=0;k=n-1;是否输入学号,姓名,成绩k=k+1结束查找:输入查找学号n,变量 kk=0n=k是否k=k+1输出插入:输入插入位置n 表长 L 变量 kndataj+1.xh,L-dataj.xh);strcpy(L-dataj+1.xm,

12、L-dataj.xm);L-dataj+1.cj=L-dataj.cj结束删除:输入删除的位置n 变量 k 表长 L输入错误ndataj.xh,L-dataj-1.xh);strcpy(L-dataj.xm,L-dataj-1.xm);L-dataj.cj=L-dataj-1.cj结束列表:输入表长L 变量 kk=L是否输出学号,姓名,成绩k=k+1结束实验目的: 学生管理系统( 链表 )实验要求: 1. 建表2. 删除3. 列表4. 退出源程序:#include#include#includestruct xueshengchar xh7;char xm40;int cj;struct xu

13、esheng *next;struct xuesheng *cha_ru(struct xuesheng *x)struct xuesheng *p,*q;int c;doif(x=0) x=(struct xuesheng *)malloc(sizeof(struct xuesheng); printf(input xh:); scanf(%s,(*x).xh);printf(input xm:); scanf(%s,(*x).xm);printf(input cj:); scanf(%d,&(*x).cj);(*x).next=0; else p=x;while(*p).next!=0)p

14、=(*p).next;q=(struct xuesheng *)malloc(sizeof(struct xuesheng);printf(input xh:); scanf(%s,(*q).xh);printf(input xm:); scanf(%s,(*q).xm);printf(input cj:); scanf(%d,&(*q).cj);(*p).next=q;(*q).next=0; printf(ni hai ji xu me? 1/2:);scanf(%d,&c);while(c=1);return(x);int link_len(struct xuesheng *x)stru

15、ct xuesheng *p;int l=0;p=x;if(p!=0)dol=l+1;p=p-next;while(p!=0);return(l);struct xuesheng *shan_chu(struct xuesheng *x)struct xuesheng *p,*q,*t;int k,l,i;p=x;q=x;l=link_len(x);printf(input shan chu jie dian xu hao :);scanf(%d,&k);if(kl)printf(error data!n);if(k=1) x=p-next;t=p;free(t);if(k1&k=l) for

16、(i=1;inext;t=p-next;for(i=1;inext;p-next=q;free(t); printf(vvvvvvv shan chu wan bi ! vvvvvvvn);return(x);void lie_biao(struct xuesheng *x)struct xuesheng *p;int l;p=x;if(p=0) printf(gai biao wei kong!n);else doprintf(%20s% 20s%7dn,(*p).xh,(*p).xm,(*p).cj);p=(*p).next;while(p!=0);l=link_len(x);printf

17、(l=%dn,l);main()struct xuesheng *s_head;int n;s_head=0;doprintf(1:cha run);printf(2:cha zhaon);printf(3:shan chun);printf(4:lie biaon);printf(5:tui chun);printf(input 1-5:);scanf(%d,&n);switch(n)case 1: s_head=cha_ru(s_head);break;/* case 2: cha_zhao(s_head);break;*/case 3: s_head=shan_chu(s_head);b

18、reak;case 4: lie_biao(s_head);break;while(n=1|n=3|n=4);printf(n);return 0;框图:主函数:1.建表2.删除3.列表输入 n( 1-4)n=1是否是n=2否是否n=3输入错误否4.退出建表:输入学号,姓名,成绩p-=0否是p=p.nextp.next=qq.next=0是是否继续否结束删除:定义表长L, k, i否k0是k=1是x=p-next;t=p;free(t);是i=1 ;inext;t=p-next;i=i+1;结束此表为空否L=k否inext;p-next=q;i=i+1;否输入错误否free(t);总结:顺序表存储位置是相邻连续的,可以随即访问的一种数据结构,一个顺序表在使用前必须指定起长度,一旦分配内存,则在使用中不可以动态的更改。他的优点是访问数据是比较方便,可以随即的访问表中的任何一个数据 , 缺点是定义的长度不可更改造成存储空间的浪费。链表是通过指针来描述元素关系的一种数据结构,他可以是物理地址不连续的物理空间。不能随即访问链表元素,必须从表头开始,一步一步搜索元素。它的优点是:对于数组,可以动态的改变数据的长度,分配物理空间。建议:在使用中如果一个数组在使用中,查询比较多,而插入,删除数据比较少,数组的长度不变时,选顺序表比较合理。如果插入,删除,长度不定的数组,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论