还剩2页未读,继续阅读
文本内容:
实验报告
一、实验目的通过学习,上机实践熟悉用C语言编程,并掌握建立一个线性表,输出一个线性表,对线性表进行数据的的插入或删除
二、实验内容编制c程序,利用顺序存储方式实现下列功能从键盘输入数据建立一个线性表,并输出该线性表;然后根据屏幕菜单中的选择,进行数据的插入或删除等操作,并在插入或删除数据后输出线性表;最后在屏幕菜单中选择Q或q,即可结程序的运行
三、实验步骤1构写程序的大体框架;2具体编写程序;3程序的检查;4程序的调试;
四、实验调试过程及结果1调试程序,输入顺序存储的个数n:shu run=8按Enter依次输入数据data[O]到data
[8]12345678如图一Oata
[0]=atatl]=ataC2]=ataL3]=ataC4]=ataC5]=ata
[6]=ata[]=图一按Enter得到顺序存储的各个元素及出现插入删除退出操作的屏幕菜单选择如图二data
[0]=l dataCl]=2data
[2]=3data
[3]=4data
[4]=5data
[5]=6data[61=7data
[7]=8I...insert d^D...delete•.quit:图二2根据插入删除退出操作的屏幕菜单选择i,插入数据9,插入位置为输入2,即在data
[2]中的数据为9,原来的数据从第2个开始都向后移了一个位置,结果如图三9the inserteddataJ slocation2图三3根据插入删除退出操作的屏幕菜单选择d,删除数据位置为5,即删除数据5,并且后面的数据依次向前移一个位置,结果如图四the deleteddata slocation5图四4根据插入删除退出操作的屏幕菜单选择q,即退出屏幕,结束程序运行
五、具体程序#include〃stdio.h〃#include〃malloc.h〃#define maxsize1024typedef chardatatype;typedef struct{datatype data[maxsize];int last;sequenlist;int insertsequenlist*L,datatype x,int i{int j;if L-last-maxsize-1{printfoverflow;return0;else ifi0||iL-last{printf error;return0;else{for j=L-last;j=i;j—L-data[j+l]=L-data[j];L-data[i]=x;L-last=L-last+l;}return1;}dpddddddida.eaQerseuIdaptne:idU12934678p========1•1nU129345678steetst.1nint dellistsequenlist*L,int i{ifi0||iL-last{printf error;return0;}else{for;iL-last;i++L-data[i]=L-data[i+l];L-last=L-last-l;return1;void creatlistsequenlist*L{int n,i;char tmp;printf z/shu run二〃;scanf〃%d〃,n;fori=0;in;i++{printf z/data[%d]=〃,i;fflushstdin;scanf〃枇〃,tmp;L-data[i]=tmp;}L-last=n-l;printf〃\n〃;}void printoutsequenlist*L{int i;for i=0;i=L-last;i++{printf z/data[%d]=z/,i;printf/z%c\n/z,L-data[i];main{sequenlist*L;char cmd,x;int i;L=sequenlist*mallocsizeofsequenlist;creatlistL;printoutL;doprintf〃i,L..insert:\n〃;printf〃d,D...delete:\n/z;printf zzq,Q...quit:\n〃;do{fflushstdin;scanf〃%c〃,cmd;}while cmd!=,dcmd!=qcmd!=,Q,cmd!=,D cmd!=icmd!=,T;switchcmd,・,rt case1:caser:printf/zinsert adata:;fflushstdin;scanf〃%c〃,x;printfPlease putin theinserted dataslocation:〃;scanf〃%d〃,i;insert L,x,i;printoutL;break;cased’:caseD’:printf/zPlease putin thedeleted dataslocation/7;fflushstdin;scanf〃%d〃,i;dellist L,i;printoutL;break;}whilecmd!=,qcmd!=Q;。