数据结构1
- 格式:docx
- 大小:15.87 KB
- 文档页数:4
实验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) //遍历输出线性表 {