顺序表的基本操作实现 c语言

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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()

{

相关文档
最新文档