线性表的基本操作

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

数据结构实验报告

2011 年 4 月13 日

项目组成

一.

二.程序结构图

题目一:

main

InitList_Sq

ListEmpty_S ListLength_S PriorElem_Sq LocateElem_S

GetElem_Sq ListInsert_Sq CreateList_S DestroyList_S ClearList_Sq NextElem_Sq

ListDelete_Sq ListTraverse_S

题目二:

三.算法及其功能函数

题目一:

InitList_Sq(SqList *L) /*创建线性表*/

CreateList_Sq(SqList *L) /*输入线性表中元素 */ DestroyList_Sq(SqList *L) /*销毁线性表*/ ClearList_Sq(SqList *L) /*清空线性表*/ ListEmpty_Sq(SqList L) /*判断是否为空*/ ListLength_Sq(SqList L) /*求线性表长度 */

GetElem_Sq(SqList L, int i, ElemType *e) /*取第i 个元素并用e 返回*/ LocateElem_Sq (SqList L, int e) /*判断e 在表中位置*/ PriorElem_Sq(SqList L,int i, ElemType cur_e, ElemType *pre_e) /*取前驱*/ NextElem_Sq(SqList L,int i, ElemType cur_e, ElemType *next_e ) /*取后继*/ ListInsert_Sq(SqList *L, int i, ElemType e) /*在第i 个元素前插入e*/ ListDelete_Sq(SqList *L, int i, ElemType *e) /*删除第i 个元素 */ ListTraverse_Sq(SqList L,int i) /*遍历线性表*/

main

InitList_L

ListInsert_L

CreateList_L

NextElem_L

DestroyList_

LocateElem_

PriorElem_L

ListEmpty_L

ListDelete_L

ClearList_L

ListTraverse_

ListLength_L GetElem_L

题目二:

InitList_L(LinkList *L) /*创建线性表*/ CreateList_L(LinkList *L) /*输入线性表中元素*/ DestroyList_L(LinkList *L) /*销毁线性表*/

ClearList_L(LinkList *L) /*清空线性表*/ ListEmpty_L(LinkList L) /*判断是否为空*/ ListLength_L(LinkList L) /*求线性表长度*/ GetElem_L(LinkList L, int i, ElemType *e) /*取第i个元素并用e返回*/ LocateElem_L (LinkList L, int e) /*判断e在表中位置*/ PriorElem_L(LinkList L,int i, ElemType cur_e, ElemType *pre_e) /*取前驱*/ NextElem_L(LinkList L,int i, ElemType cur_e, ElemType *next_e ) /*取后继*/ ListInsert_L(LinkList *L, int i, ElemType e) /*在第i个元素前插入e*/ ListDelete_L(LinkList *L, int i, ElemType *e) /*删除第i个元素*/ ListTraverse_L(LinkList L,int i) /*遍历线性表*/

四.源代码

题目一:

#include

#include

typedef int ElemType;

typedef int Status;

#define OK 1

#define ERROR 0

#define TRUE 1

#define FALSE 0

#define OVERFLOW -2

#define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量

#define LISTINCREMENT 10 //线性表空间的分配增量

typedef struct{

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

int length; //当前长度

int listsize; //当前分配的存储容量(以sizeof(ElemType)为单位)

}SqList;

Status InitList_Sq(SqList *L) {

//构造一个空的线性表L。

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

if(!(*L).elem) exit(OVERFLOW); //存储空间失败

(*L).length=0; //空表长度为0

(*L).listsize=LIST_INIT_SIZE; //初始存储容量

return OK;

} //InitList_Sq

Status CreateList_Sq(SqList *L){

int i,n;

printf("请输入线性表长度\nn=");

scanf("%d",&n);

(*L).length=n;

printf("\n输入线性表L:\n");

for(i=0;i

scanf("%d",&((*L).elem[i])); //输入线性表元素

return OK;

}

Status DestroyList_Sq(SqList *L) {

//销毁线性表L。

if((*L).elem)

free((*L).elem); //释放线性表占据的所有存储空间return OK;

} //DestroyList_Sq

Status ClearList_Sq(SqList *L) {

//将L重置为空表。

(*L).length=0; //将线性表的长度置为0 return OK;

} //ClearList_Sq

Status ListEmpty_Sq(SqList L) {

//线性表判空。

if(L.length==0)

return TRUE; //若L为空,则返回TURE else

return FALSE; //若L不为空,则返回FALSE } //ListEmpty_Sq

Status ListLength_Sq(SqList L) {

//返回线性表的长度。

return(L.length);

} //ListLength_Sq

Status GetElem_Sq(SqList L, int i, ElemType *e) {

//用e返回L中的第i个数据元素的值。

if(i<1||i>L.length) return ERROR; // i值不合法

相关文档
最新文档