#include
#define MAXSIZE 50//最大表长
#define ElemType inttypedef struct {//定义顺序表结构体ElemType data[MAXSIZE];//静态分配空间int length;
}SqList;
bool ListInsert(SqList &L,int i,ElemType e){//在指定位置插入元素if(i<1||i>L.length+1) //检查插入位置的合法性return false; if(L.length>=MAXSIZE) //检查表是否满return false;for(int j=L.length;j>=i;j--){L.data[j]=L.data[j-1];//i后面的元素统统向后移动一格}L.data[i-1]=e;//在位序i处插入eL.length++; //表长加1return true;
}
bool ListDelete(SqList &L,int i,ElemType &e){ //删除线性表中指定位置的元素并将其返回if(i<1||i>L.length) //检查删除位置的合法性return false;e=L.data[i-1];for(int j=i;ji){temp=L.data[i];L.data[i]=L.data[j];//swapL.data[j]=temp;i++;j--;}
}
void deleteAll_X(SqList &L,ElemType x){//删除表中所有的值为x的元素int x_number=0;for(int i=0;i
线性表的基本操作包括:
初始化表 InitList(SqList &L)
插入元素ListInsert(SqList &L,int i,ElemType e)
删除元素ListDelete(SqList &L,int i,ElemType &e)
按值查找LocateElem(SqList L,ElemType e)
按位查找GetElem(SqList L,int i)
求表长 ListLength(SqList L)
判空 Empty(SqList L)
……
其他操作包括:
删除表中相同的元素x deleteAll_X(SqList &L,ElemType x)
逆值表中所有元素 Reverse(SqList &L)
打印表中内容 PrintList(SqList L)