数据结构顺序表实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

洛阳理工学院实验报告系别计算机班级学号姓名课程名称数据结构实验日期10/23实验名称顺序表的基本操作成绩实验目的:熟悉掌握线性表顺序存储结构,掌握与应用顺序表的查找、插入、删除等基本操作算法,训练和提高结构化程序设计能力及程序调试能力。实验条件:计算机一台,VisualC++6.0实验内容:1.问题描述以顺序表为存储结构实现以下基本操作:(1)在第i个元素前插入一个新元素。(2)查找值为x的某个元素。若成功,给出x在表中的位置;不成功给出提示信息。(3)删除第i个元素,若成功,给出提示信息并显示被删元素的值;不成功给出失败的提示信息。2.数据结构类型定义typedefstruct{ElemTypeelem[MAXSIZE];Intlast;}SeqList;3.模块划分(1)创建顺序表输入函数:voidInput(SeqList*L,intn);(2)创建顺序表输出函数:voidOutput(SeqList*L);(3)创建顺序表的内容查找函数:intLocate(SeqListL,ElemTypee);(4)创建顺序表的插入函数:intInsList(SeqList*L,inti,ElemTypee);(5)创建顺序表的删除函数:intDelList(SeqList*L,inti,ElemType*e);(6)主函数:voidmain()4.详细设计#includestdio.h#includestdlib.h#includemalloc.h#defineOK1#defineERROR-1#defineTRUE1#defineFALSE0#defineElemTypeint#defineMAXSIZE100//最大长度typedefstruct{ElemTypeelem[MAXSIZE];intlast;}SeqList;voidInput(SeqList*L,intn)//输入函数{inti;printf(请输入线性表的各元素值:\n);for(i=0;in;i++)scanf(%d,&L-elem[i]);}voidOutput(SeqList*L)//输出函数{inti;for(i=0;i=L-last;i++)printf(%2d,,L-elem[i]);printf(\n);}intLocate(SeqListL,ElemTypee)//内容查找函数{inti;i=0;while((i=L.last)&&(L.elem[i])!=e)i++;if(i=L.last)return(i+1);//返回序号elsereturn(-1);}intInsList(SeqList*L,inti,ElemTypee)//插入数据{intk;if((i1)||(iL-last+2))/*首先判断插入位置是否合法*/{printf(插入位置不合法\n);return(ERROR);}if(L-last=MAXSIZE-1){printf(表已满无法插入);return(ERROR);}for(k=L-last;k=i-1;k--)//为插入元素而移动位置L-elem[k+1]=L-elem[k];L-elem[i-1]=e;//第i个元素的下标为i-1L-last++;return(OK);}intDelList(SeqList*L,inti,ElemType*e)//删除函数/*在顺序表L中删除第i个数据元素,并用指针参数e返回其值。i的合法取值为1≤i≤L.last+1*/{intk;if((i1)||(iL-last+1)){printf(删除位置不合法!\n);return(ERROR);}*e=L-elem[i-1];/*将删除的元素存放到e所指向的变量中*/for(k=i;k=L-last;k++)L-elem[k-1]=L-elem[k];/*将后面的元素依次前移*/L-last--;return(TRUE);}voidmain()//主函数{SeqListl,*la;intp,q,r,k,j,m,num;printf(请输入线性表的长度:);scanf(%d,&r);l.last=r-1;la=&l;Input(la,la-last+1);Output(la);//按内容查找元素printf(请输入要查找的元素值:\n);scanf(%d,&q);p=Locate(l,q);if(p==-1)printf(在此线性表中没有该元素!\n);elseprintf(该元素在线性表中的位置为:%d\n,p);//插入元素(在i处插入元素e)printf(请输入要插入的位置:\n);scanf(%d,&k);printf(请输入要插入的元素值:\n);scanf(%d,&j);InsList(la,k,j);//调用插入函数Output(la);//删除元素删除第i个元素printf(请输入需要删除的元素的位置:\n);scanf(%d,&m);DelList(la,m,&num);printf(删除成功,删除的元素为%d,num);printf(\n);Output(la);}5.测试数据及结果实验总结:经过调试与测试,实验结果与测试预期一致。顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功