1.初始化
初始化是指为顺序表分配一段连续的空间,用elem记录这段空间的基地址用new去分配大小为Maxsize的空间,分配成功返回空间的首地址,分配失败返回空指针
bool InitList(SqList &L)
{
L.elem=new int [Maxsize]
if(!L.elem)
return False;
L.length=0
else
return ture
}
2.创建
1.初始化下标变量i=0,判断表是否已满,如果是则结束;否则执行2
2.输入一个数据元素x
3.将数据x存入顺序表的第i个位置
4.顺序表长度+1
5.知道数据输入完毕
bool CreatList(SqList &L)
{
int x,i;
cin>>x;
while(x!=-1) //输入-1时结束
{
if(L.length==Maxsize)
{
cout<<"顺序表已满";
return False;
}
L.length++;
cin>>x;
}
return ture;
}
3.取值
顺序表是随机存储模式,只要i是合法的就能立即找到
bool GetList(SqList L,int i,int &e)
{
if (i<1||i>L.length)
return False;
e=L.elem[i-1]
return ture
}
4.查找
int LocateList(SqList L,int e)
{
for (i=0,i<L.Length;i++)
{
if(L.elem[i]==e)
return i+1;
}
return -1
}
5.插入
1.判断插入位置是否合法,可以在第一个位置也可以在L.length+1的位置
2.判断顺序表的存储空间是否已满
3.将L.length值第i个元素依次向后移动一个位置,空出第i个位置
4.将要插入的新元素e放到i的位置
5.表长+1,成功返回ture
bool ListInsert_sq(SqList &L,int i,int e)
{
if(i<1||i>L.Length+1)
return False;
if(L.Length==maxsize)
return False;
for(int j=L.Length-1,j>=i-1,j--)
{
L.elem[j+1]=L.elem[j];
}
L.Length++;
return ture;
}
6.删除
1.判断删除位置是否合法
2.将要删除的元素保存在e中
3.将第i+1至第n个元素详向前移动一个位置
4.表长-1,删除成功返回ture
bool ListDelet_sq(SqList &L,int i,int e)
{
if(i<1||i>L.Length)
return False;
e=l.elem[i-1]
for(int j=i,j<=L.Length-1,j++)
{
L.elem[j-1]=L.elem[j];
}
L.Length--;
return ture;
}
顺序表的优缺点
1.优点
操作简单,储存密度高可以随机存取
2.缺点
需要预先分配最大空间