您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页顺序表的基本操作--实验报告

顺序表的基本操作--实验报告

来源:五一七教育网
实验报告

课程名称 实验名称 学生学号 实验目的: 掌握线性表的基本操作:插入、删除、查找在顺序存储结构上的实现。 实验条件: 计算机一台、Visual C++ 6.0 实验内容与算法思想: 内容: 建立一有序的顺序表,并实现下列操作: 1、把元素x插入表中并保持有序;2.查找值为x的元素,若找到将其删除; 2、输出表中各元素的值。 算法思想: 1、创建并初始化一个顺序表,通过循环,由键盘输入一串数据。 2、创建主函数。 3、编写算法,完成子函数模块。 4、调用子函数,完成实验要求。 运行结果: 输入一串数字(如输入:1 2 3 5 6 ),输出“要插入的元素,位置为”;输入要插入的元素及位置(如:4,4),输出插入后的顺序表(1 2 3 4 5 6),并提示输入要查找的元素(要查找的元素为);输入要查找的元素(如:3),如果该元素不在顺序表中则输出“该元素不存在”;若该元素在顺序表中则输出其所在位置(该元素所在位置的序号为3),并询问是否删除该元素(是否要删除该元素?<是请输入 1 ,否请输入 0 >);输入1则删除该元素并输出删除后的顺序表(删除互殴的顺序表为:1 2 4 5 6),输入0则不删除该元素,并输出“未删除该元素”。 B11050226 数据结构 顺序表的基本操作 姓名 枯天蝎 日期 班级 2013-03-20 计算机二班 实验总结(结论或问题分析): 1、程序编写时是以“-1”作为顺序表输入结束符号的,但是程序也将“-1”作为顺序表的最后一个元素储存进顺序表。后增加一个判断语句 if(L.elem[L.last]==-1) L.last--; 解决了此问题。 2、通过该次实验掌了握线性表的基本操作:插入、删除、查找在顺序存储结构上的实现。更深一步了解到算法在C语言程序中的使用及函数调用的方法。 3、由于时间和个人能力所限,本次实验没没能完成对任意输入的一串字符进行识别判断,并按一定顺序存储的功能。另外,对时间复杂度方面的知识的掌握还不够,不能编写出最简练,效率最高的程序。 实验成绩

附:源程序:

#include #define Maxsize 100 #define error 0 #define ok 1 typedef struct {

int elem[Maxsize]; int last;

任课教师签名 张红霞 }SeqList;

int InsList(SeqList *L,int a,int i); int Locate(SeqList L,int e); int Del(SeqList *L,int i); void main() {

int i,e,a; int list1,list2;

if(L.elem[L.last]==-1) SeqList L; L.last=0; for(i=0;i<100;i++) { }

printf(\"请输入顺序表元素\\n\"); scanf(\"%d\if(L.elem[i]==-1) break; L.last++;

L.last--;

printf(\"要插入的元素,位置为\\n\");

scanf(\"%d,%d\

list1=InsList(&L,a,i); if(list1) { } else

printf(\"插入失败!\"); printf(\"要查找的元素为\\n\"); scanf(\"%d\

printf(\"插入后的顺序表为:\\n\"); for(i=0;i<=L.last;i++)

printf(\"%d\

printf(\"\\n\");

list2=Locate(L,e);

if(!list2)

printf(\"该元素不存在\\n\");

}

else

printf(\"该元素所在位置的序号为:%d\\n\/*删除元素*/

printf(\"是否要删除该元素?<是请输入 1 ,否请输入 0 >\\n\"); int m;

scanf(\"%d\if(m) {

Del(&L,list2);

printf(\"删除后的顺序表为:\\n\");

for(i=0;i<=L.last;i++) }

else printf(\"未删除元素%d\\n\

printf(\"%d\

printf(\"\\n\");

int InsList(SeqList *L,int a,int i)//i位置,下标i-1 {

for(p=L->last;p>=i-1;p--)

L->elem[p+1]=L->elem[p];

int p;

if(L->last>=Maxsize-1) { }

printf(\"表已满,无法插入\"); return(error);

L->elem[i-1]=a; L->last++; return(ok);

}

int Locate(SeqList L,int e) { }

int Del(SeqList *L,int i) { }

for(k=i;k<=L->last;k++)

L->elem[k-1]=L->elem[k]; int k; int i=0;

while((i<=L.last)&&(L.elem[i]!=e))

i++;

if (i<=L.last)

return(i+1);

else return(error);

L->last--; return ok;

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务