《数据结构——线性表.docx》由会员分享,可在线阅读,更多相关《数据结构——线性表.docx(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验报告一、实验目的:通过学习,上机实践熟悉用C语言编程,并掌握建立一个线性表,输出 一个线性表,对线性表进行数据的的插入或删除。二、实验内容:编制c程序,利用顺序存储方式实现下列功能:从键盘输入数据建立一 个线性表,并输出该线性表;然后根据屏幕菜单中的选择,进行数据的插 入或删除等操作,并在插入或删除数据后输出线性表;最后在屏幕菜单中 选择Q或q,即可结程序的运行。三、实验步骤:(1)构写程序的大体框架;(2)具体编写程序;(3)程序的检查;(4)程序的调试;四、实验调试过程及结果:(1) 调试程序,输入顺序存储的个数n: shu ru n=8按Enter依次输入 数据 dataO到 dat
2、a8: 1 2 3 4 5 6 7 8O如图一:ata0= atatl = ataC2 = ataL3= ataC4= ataC5 = ata6 = ata?=(图一)按Enter得到顺序存储的各个元素及出现插入删除退出操作的屏幕菜 单选择。如图二:data0=l dataCl=2 data2=3 data3=4 data4=5 data5=6 data61=7 data7=8I.insert:dD.delete:.quit:(图二)(2)根据插入删除退出操作的屏幕菜单选择i,插入数据9,插入位置为输 入2,即在data2中的数据为9,原来的数据从第2个开始都向后移了一个 位置,结果如图三:a
3、 p t e r s e ane: idU129345678 sn .1 t:9theinserted dataJ slocation: 2(图三)(3)根据插入删除退出操作的屏幕菜单选择d,删除数据位置为5,即删除 数据5,并且后面的数据依次向前移一个位置,结果如图四:dpddddddid a.tU12934678 p =e e t s 1 1 n e u Id Qthe deleteddata s location:5(图四)(4)根据插入删除退出操作的屏幕菜单选择q,即退出屏幕,结束程序 运行。五、具体程序:#includestdio. h#includemalloc. h#define
4、 maxsize 1024 typedef char datatype; typedef struct datatype datamaxsize; int last;)sequenlist;int insert(sequenlist *L, datatype x, int i) int j;if (L-last-maxsize-1)printf(overflow);return 0; )else if(iL-last)printf (error);return 0;elsefor (j=L-last; j=i; j) L-dataj+l=L-dataj; L-datai=x;L-last=L-
5、last+l;return (1);int dellist (sequenlist *L, int i) if(iL-last)printf (error);return 0; elsefor(;ilast;i+)L-datai=L-datai+l;L-last=L-last-l;return (1);void creatlist(sequenlist *L) int n, i;char tmp;printf (z/shu ru n二);scanf(%d, &n);for(i=0;idatai=tmp;L-last=n-l;printf (n);void printout(sequenlist
6、 *L)int i;for (i=0;ilast;i+) printf (z/data%d=z/, i);printf (/z%cn/z, L-datai);main ()sequenlist *L;char cmd, x;int i;L= (sequenlist *)malloc(sizeof(sequenlist);creatlist(L);printout(L);do(printf(i, L . . insert:n);printf (d, D. delete:n/z);printf (zzq, Q. . . quit:n);do fflush(stdin);scanf(c, &cmd)
7、;while (cmd!=,d)&(cmd!=q)&(cmd!=,Q,)&(cmd!=,D )&(cmd!=i )&( cmd!=,T );switch(cmd)r,t case 1 :case r :printf(/zinsert a data:);fflush(stdin);scanf (%c, &x);printf(Please put in the inserted datas location: );scanf (%d, &i);insert (L, x, i);printout(L);break;case d:case D:printf(/zPlease put in the deleted datas location/7);fflush(stdin);scanf (%d, &i);dellist (L, i);printout(L);break;)while(cmd!=,q)&(cmd!=Q);