感觉顺序表hin接近数组,可以当做是数组与一个数字变量组成的结构体。
下面写出几个基本用法
typedef struct
{
datatype data[MAX];
int last;
}Seq;
书上只给出一个函数
SeqList *init_SeqList()
{
SeqList *L;
L = (SeqList*)malloc(sizeof(SeqList));
L->last = -1;
return L;
}
简单使用一下,给数组赋初值
int main()
{
SeqList *L;
L = Init_SeqList();
for(int i = 0;i<MAX;i++)
{
L->data[i] = i;
L->last++;
cout<<L->data[i]<<" ";
}
return 0;
}
与数组类似,要用前一个元素覆盖掉后一个的元素,数组长度相应增加
int insert_Seq(SeqList *L,int i,int x)
{
if(L->last==MAX-1)
{
cout<<"表满";
return -1;
}
if(i<1||i>L->last+2)
{
cout<<"插入位置错";
return 0;
}
for(int j = L->last; j>=i-1; j--)
L->data[j+1] = L->data[j];
L->data[i-1] = x;//插入元素
L->last++;
return 1;//成功插入
}
这次是用后一个元素覆盖掉前一个元素,数组长度相应减少
int delete_Seq(SeqList *L,int i)
{
if(i<1||i>L->last+1)
{
cout<<"不存在第i个元素";
return 0;
}
for(int j = i; j<=L->last; j++)
L->data[j-1] = L->data[j];
L->last++;
return 1;//成功删除
}
int Location(SeqList* L,int x)//x是要找的数
{
int i=0;
while(i<=L->last&&L->data[i]!=x)
i++;
if(i>L->last)
return -1;
else
return i;//返回存储位置
}