顺序表的基本操作实现 c语言
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构实验报告书
1.实验题目
顺序表的基本功能实现
2.实验目的和要求
熟悉顺序表的插入、删除和查找。
3.实验内容
实现顺序表各种基本运算
(1)以顺序表作为存储结构;
(2)实现顺序表上的数据元素的插入运算;
(3)实现顺序表上的数据元素的删除运算;
(4)实现顺序表上的数据元素的查找运算。
4.(1)抽象数据类型定义
实现顺序表上的数据元素的插入删除和查找运算
(2)存储结构定义及算法思想
typedef struct
{
int *elem;
int length;
int listsize;
}SqList;
插入算法思路:通过不断循环找到插入位置的前一个元素,将这个元素之后的每一个元素后移,再将要插入的元素放入其中,最后将表长加一。
删除算法思路;类似于插入的思路,找到删除元素之后的第一个元素找到,依次将后面的元素前移覆盖,最后减小一个单位的表长。
(3)实验结果与分析
初始界面
输入元素数目3和元素1,2,3
进入到主界面
选择1
选择2,并删除第2个元素
选择3,插入5到第3个位置
选择4,查询第2位元素
选择1检查全表
(4)心得体会
本次实验我没有做多余的提前准备,只是复习了一下书上的算法,到机房上机编写程序之后发现问题很多,而且时间也不是很够,于是只完成了单链表的程序,在试验中遇到了很多的问题,比如工程格式的问题,这个问题直接导致我很多问题无法解决,不过后来及时发现了错误,成功的解决了问题,本次试验还有很多不足,由于c语言已经不是很记得,很多语法错误都没能即使发现,给调试带来了巨大的困难,下次实验之前我会提前准备好程序以免浪费宝贵上机时间
附录:源程序
#include
#include
#define OK 1
#define ERROR 0
#define LIST_INIT_SIZE 100
typedef struct
{
int *elem;
int length;
int listsize;
}SqList;
int InitList(SqList &L)
{
L.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L.elem) exit(OVERFLOW);
L.listsize=LIST_INIT_SIZE;
L.length=0;
return OK;
}
int CreatList(SqList &L)
{
int i,n;
printf("请输入元素个数n和n个元素\n");
scanf("%d",&n);
for(i=0;i scanf("%d",L.elem+i); L.length=n; return OK; } void SHOW(SqList L) { int i; for(i=0;i printf("%d ",*(L.elem+i)); printf("\n长度为:%d\n\n",L.length); } int ListDelete(SqList &L) { int i,j,n,*p; printf("请输入删除第几位元素\n"); scanf("%d",&i); if(i<0||i>L.length) return ERROR; p=&(L.elem[i-1]); n=*p; printf("删除的第%d位元素值为%d",i,n); for(j=i; j L.elem[j-1]=L.elem[j]; L.length--; return OK; } int ListInsert(SqList &L) { int i,e; printf("请输入插入到第几位元素\n"); scanf("%d",&i); printf("请输入插入什么元素\n"); scanf("%d",&e); int *p,*q; if(i<1||i>L.length+1) return ERROR; q=&(L.elem[i-1]); for(p=&(L.elem[L.length-1]);p>=q;--p) *(p+1)=*p; *q=e; ++L.length; return OK; } int LocateElem(SqList L) { int i,n,*p; printf("请输入查找第几位元素\n"); scanf("%d",&i); int j; if(i<0||i>L.length) return ERROR; p=&(L.elem[i-1]); n=*p; printf("查找到的第%d位元素值为%d",i,n); return OK; } void choice() {