数据结构1

  • 格式:docx
  • 大小:15.87 KB
  • 文档页数:4

下载文档原格式

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

实验2 线性表的顺序储存结构实现

13081319 金晨(3)设计线性表的接口函数”int MergeList(LIST &L1,LIST L2);”,把线性表L中的数据全部合并到线性表L1的尾部。其中,L1中有数据{1,2,3,4,5},L2中有数据{6,7,8,9,10};合并的结果为L1中包含数据{1,2,3,4,5,6,7,8,9,10}。

代码如下:

//listInArray.h(此为顺序表的类型声明和操作接口声明)

#include

using namespace std;

#define LISTSIZE 100

typedef int DataType; //声明DataType类型

typedef struct SqList

{

DataType items[LISTSIZE]; //存放线性表数据

int length;

}LIST; //LIST为用户定义的线性表类型

void InitList(LIST &L); //初始化空线性表

int ListEmpty(LIST &L); //判断线性表是否为空

int ListLength(LIST &L); //求出线性长度

int ListInsert(LIST &L,int pos,DataType item); //向线性表指定位置插入一个新元素

int ListDelete(LIST &L,int pos,DataType *item); //从线性表中删除第一个与指定匹配的元素

int GetElem(LIST &L,int pos,DataType *item); //获取顺序表中指定位置上的数据元素

int Find(LIST &L,DataType item); //从线性表中查找元素,返回第一个与指定匹配元素的位置

int TraverseList(LIST &L); //遍历输出线性表

int MergList(LIST &L1,LIST &L2); //合并线性表Src到线性表Des尾部

//listInArray.cpp(此为顺序表的操作实现代码)

#include "listinarray.h"

void InitList(LIST &L) //初始化空线性表

{

L.length=0;

}

int ListEmpty(LIST &L) //判断线性表是否为空

{

if(L.length <= 0)

return 1;

else

return 0;

}

int ListLength(LIST &L) //求出线性表长度

{

return L.length;

}

int ListInsert(LIST &L,int pos,DataType item) //pos为插入的(逻辑)位置,item为待插入的数据元素

{

int i;

if(L.length >= LISTSIZE) //判表满

{

cout<<"顺序表满,无法插入!"<

return 0;

}

if(pos <= 0 || pos > L.length+1) //判位置

{

cout<<"插入位置无效!"<

return 0;

}

for(i=L.length-1;i>=pos-1;i--) //向后移动元素

L.items[i+1]=L.items[i];

L.items[pos-1]=item; //插入

L.length++; //表长增一

return 1;

}

int ListDelete(LIST &L,int pos,DataType *item) //pos为删除的(逻辑)位置,用item 返回被删元素

{

int i;

if(ListEmpty(L)) //判表空

{

cout<<"顺序表为空表,无法删除!"<

return 0;

}

if(pos < 1 || pos > L.length) //判位置

{

cout<<"删除位置无效!"<

return 0;

}

* item=L.items[pos-1]; //删除元素前,把元素的值通过指针传递给外部,备用

for (i=pos;i

L.items[i-1]=L.items[i];

L.length--; //表长减1

return 1;

}

//获取顺序表中指定位置上的数据元素

int GetElem(LIST &L,int pos,DataType *item) //pos为指定位置,item用于返回找到的数据元素

{

if(ListEmpty(L))

{

return 0;

}

if(pos<=0||pos>L.length)

{

cout<<"位置无效"<

return 0;}

* item=L.items[pos-1]; //把元素的值通过指针传递给外部

return 1;

}

//从线性表中查找元素,返回第一个与指定值匹配元素的位置

int Find(LIST &L,DataType item) //item为待查找的数据元素

{

int i=0; //i表示当前查找的位置,从头开始

if(ListEmpty(L))

{

cout<<"顺序表为空表,无法查找!"<

return 0;

}

while(i

i++;

if(i

return i+1; //返回逻辑值

else

return 0; //超出线性表的末尾,说明找不到

}

int TraverseList(LIST &L) //遍历输出线性表

{