线性表的基本操作 实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验1 线性表的基本操作

姓名小明

一、需求分析

1.程序的功能:实现基本线性表的运算:插入数据,删除数据,查找数据,求顺序表长度,遍历链表。

2.输入输出的要求:数据必须为整数并大于0,插入数据必须为一位整数;

3.测试数据

测试数据可由使用者自己输入。

二、概要设计

1.本程序所用的抽象数据类型的定义:由顺序表,结构体通过指针连接组成;

然后根据各个选项调用所需函数

三、详细设计

1.定义相关的数据类型:

结构体链表SqList,其中包含

ElemType *elem; int length;int listsize;

2.写出各模块的伪码算法;

插入数据:

Status ListInsert(Sqlist &L,int i,ElemType e)

{

int *q=&(L.elem[i-1]);

ElemType *newbase,*p;

if(i<1||i>(L.length+1))

return ERROR;

if(L.length>=L.listsize)

{

newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));

if(!newbase)exit(OVERFLOW);

L.elem=newbase;

L.listsize+=LISTINCREMENT;

}

for(p=&(L.elem[L.length-1]);p>=q;--p)

*(p+1)=*p;

*q=e;

++L.length;

return OK;

}

删除数据:

Status ListDelete(Sqlist &L,int i,ElemType e)

{

if(i<1||(i>L.length))

return ERROR;

ElemType *p,*q;

p=&(L.elem[i-1]);

q=L.elem+L.length-1;

for(++p;p<=q;++p)

*(p-1)=*p;

--L.length;

return OK;

}

求表长:

int ListLength(Sqlist L)

{

return L.length;

}

Status GetElem(Sqlist &L,int i)

{

if(i<0||i>L.length)

exit(OVERFLOW);

return L.elem[i-1];

}

查找数据:

Status GetElem(Sqlist &L,int i)

{

if(i<0||i>L.length)

exit(OVERFLOW);

return L.elem[i-1];

}

int LocationElem(Sqlist L,ElemType element) {

for(i=0;i

if(L.elem[i]==element)

printf("第%d个元素为%d.\n",i+1,element); return i;

}

3.画出函数的调用关系图。

四、使用说明及测试结果1输入初始元素值:

2删除数据

删除数据1 菜单

1

调用PrintLis

2

调用

ListDelete

3

调用

ListInser

4

调用

GetElem

5

调用

LocationEl

em

6

调用

ListLeng

th

谢谢使用

3、插入数据插入数据1

4、查找数据查找数据3

5、求长度

0退出

六、源程序

#include

#include

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define INFEASIBLE -1

#define OVERFLOW -2

#define LIST_INIT_SIZE 5

#define LISTINCREMENT 1

typedef int Status;

typedef int ElemType;

typedef struct

{

ElemType *elem; //存储空间基址

int length; //当前长度

int listsize; //当前分配的存储容量

}Sqlist;

static Sqlist L;

static ElemType element;

Status InitList(Sqlist &L)

{

L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));

if(!L.elem)exit(OVERFLOW);

L.length=0;

L.listsize=LIST_INIT_SIZE ;

return OK;

}

Status DestroyList(Sqlist &L)

{

if(L.elem==NULL)

return ERROR;

else

free(L.elem);

return OK;

}

Status ClearList(Sqlist &L)

{

if(L.elem==NULL)

exit(ERROR);

相关文档
最新文档