静态分配
typedef struct{
ElemType data[maxSizw];
int length;
}SqList;
动态分配
typedef struct
{
ElemType *data;
int length;
}SqList;
初始化
//初始化
Status InitList_Sq(SqList &L)//构造一个空的顺序表L
{
L.data = new ElemType[maxSize]; //为顺序表分配空间
if(!L.data)
exit(OVERFLOW); //存储分配失败
cout<<"请输入表的长度:";
cin>>L.length;
cout<<"请输入表的数据:";
for(int i=0; i<L.length; i++)
cin>>L.data[i];
return TRUE;
}
销毁线性表
void Destory(SqList &L)
{
if(L.data) delete L.data; //释放存储空间
}
清空线性表
void ClearList(SqList &L)
{
L.length = 0;
}
求线性表长度
int GetLength(SqList L)
{
return(L.length);
}
顺序表的取值
int GetElem(SqList L, int i, ElemType &e)
{
if(i>0 || i>L.length)
return FALSE;
else
e = L.data[i-1];
return TRUE;
}
查找 时间复杂度为O(n)
int LocateElem(SqList L, ElemType e)
{
for(int i=0; i<L.length; i++)
{
if(L.data[i] == e)
return ++i;
}
return FALSE;
}
插入 时间复杂度为O(n)
int InsertElem(SqList &L, ElemType e, int x)
{
if(x<1 ||x >L.length+1) return FALSE; //插入位置为1-n
if(L.length == maxSize) return OVERFLOW;
L.length++;
for(int i=L.length-1; i>x-1; i--)
{
L.data[i] = L.data[i-1];
}
L.data[x-1] = e;
return TRUE;
}
删除 时间复杂度为O(n)
int deleteList(SqList &L, int x)
{
if(x<1 || x>L.length) return FALSE;
for(int i=x-1; i<L.length; i++)
{
L.data[i] = L.data[i+1];
}
L.length--;
return TRUE;
}