一. 实现线性表的插入、删除、求表长、查找给定值 e、查找第 i 个位置元素等基本操作,要求编写的程序以菜单方式工作;
1、定义数据结构类型
2、算法描述(自然语言或伪代码)
求表的长度
int ListLength ( SqList *L )
{
return (L->length);
}
判断线性表L是否为空
intIsEmpty(SqList &L)
{
if (L.length==0) return 1;
else return 0;
}
获取线性表L中的某个数据元素的内容
//根据指定位置,获取相应位置数据元素的内容
intGetElem(SqList L,int i,ElemType &e)
{ if (i<1||i>L.length) return ERROR;
//判断i值是否合理,若不合理,返回ERROR
e=L.elem[i-1]; //第i-1的单元存储着第i个数据
return OK;
}
按值查找:在顺序表中从头查找结点值等于给定值 x 的结点
int LocateElem ( SqList *L, ElemTypee )
{
int i = 0;
while ( i < L->length &&L->data[i] != e )
i++;
if ( i >=L->length )
return 0;
else
return i+1;
}
线性表中元素的插入
bool ListInsert ( SqList *L, int i,Elemtype e )
{
//在表中第i 个位置插入新元素 x
if (i < 1|| i >L->length +1||L->length == MaxSize)
return false; //插入不成功
i--;
for ( j = L->length; j > i; j-- )
L->data[j] = L->data[j -1]; //插入位置及之后的元素后移
L->data[i] = e; L->length++;
return ture; //插入成功
}
}
线性表中元素的删除
bool ListDelete ( SqList *L, int i,ElemType &e)
{
///删除顺序表中第i个元素
bool DeleteList(SqList&L,int i)
{
int j;
if(i<1 || i>L.length)
return false;
for(j=i; j<L.length; j++)
L.data[j-1]=L.data[j];
L.length--;
return true;
}
清空线性表L
voidClearList(SqList &L)
{
L.length=0; //将线性表的长度置为0
}