(1)插入操作:
#include<iostream>
using namespace std;
const int Maxsize=10;//定义最大长度
typedef struct
{
int data[Maxsize];//用静态的“数组”存放数据元素
int length;//顺序表当前长度
}SqList;//顺序表的定义类型
void InitList(SqList&L)
{
for(int i=0;i<Maxsize;i++)
L.data[i]=0;
L.length=0;
}
void ListInsert(SqList &L,int i,int e)
{
for(int j=L.length;j>=i;j--)//将第i个元素及其之后的元素后移
L.data[j]=L.data[i-1];
L.data[i-1]=e;//位置i处放入新的元素e
L.length++; //长度+1;
}
int main()
{
SqList L;//声明一个顺序表
InitList(L); //初始化顺序表
for(int i=0;i<4;i++)//往顺序表中任意添加几个元素
{
L.data[i]=1;
L.length++;
}
ListInsert(L,3,3);
for(int i=0;i<5;i++)
{
cout<<L.data[i]<<endl;
}
//cout<<L.length<<endl;
}
但是会有问题,如果此时i不合法,或者插入元素以后,不与其他元素相邻,就必须在其位置上特判一下。
#include<iostream>
using namespace std;
const int Maxsize=10;
typedef struct
{
int data[Maxsize];
int length;
}SqList;
bool InitList(SqList&L)
{
for(int i=0;i<Maxsize;i++)
L.data[i]=0;
L.length=0;
}
bool ListInsert(SqList &L,int i,int e)
{
if(i<1||i>L.length)//插入的元素以后不允许有空隙
return false;
if(L.length>=Maxsize)
return false;
for(int j=L.length;j>=i;j--)
L.data[j]=L.data[i-1];
L.data[i-1]=e;
L.length++;
return true;
}
int main()
{
SqList L;//声明一个顺序表
InitList(L); //初始化顺序表
for(int i=0;i<4;i++)
{
L.data[i]=1;
L.length++;
}
ListInsert(L,3,3);
for(int i=0;i<5;i++)
{
cout<<L.data[i]<<endl;
}
//cout<<L.length<<endl;
}
按值查找很简单
int LocateElem(SqList L,ElemType e)
{
int i;
for(int i=0;i<L.length;i++)
if(L.data[i]==e)
return i+1;//返回其位序i+1;
return 0; //退出循环,说明查找失败
}