线性表-数据结构
线性表相关操作
(考研参考)
1.结构体定义
typedef struct
{
int data[Maxsize];
int length;
}Sqlist;
2.初始化线性表
void initList(Sqlist &L)
{
L.length=0;
}
3.习题进入--已知一个顺序表L,其中元素递增有序排列,设计一个算法,插入一个元素x(x为int型)后保持该顺序表仍然递增排列(假设插入操作总能成功)
/*查找线性表的某个元素,返回所在的位置*/
int findElem(Sqlist &L,int x)
{
int i;
for(i=0;i<L.length;i++)
if(L.data[i]==x) return i;
return i;//找不到返回L.length,至于为什么这么写,主要是便利插入某个元素定位
}
/*插入某个位置的元素*/
void insertElem(Sqlist &L,int x)
{
int p,i;
p=findElem(L,x);
for(i=L.length-1;i>=p;i--) //元素后移,腾出p位置的空
L.data[i+1]=L.data[i];
L.data[p]=x;
++(L.length);//表的长度加一
}
3.按元素值查找算法
int findElem(Sqlist &L,int x)
{
int i;
for(i=0;i<L.length;i++)
if(L.data[i]==x) return i;
return -1; // -1表示没有查找到
}
4.插入数据的算法
在顺序表的第0<=p<=L.length中插入一个新的元素e,如果p的输入不正确,则返回0,代表插入失败;如果p的输入正确,将顺序表第p个元素以及后元素右移一位,
腾出一个空间来插入一个新的元素,顺序表长度加一,操作成功,返回1.
int insertElem(Sqlist &L,int p,int e)
{
int i;
if(p<0||p>L.length) return 0;
for(i=L.length-1;i>=p;--i)
L.data[i+1]=L.data[i];
L.data[p]=e;
++(L.length);//顺序表长度+1
return 1;
}
5.习题进入--删除顺序表L中下标为p(0<=p<=length-1)的元素,成功返回1,失败返回0 ,并将删除的元素赋值给e;
void deleteElem(Sqlist &L,int p,int &e)
{
int i;
if(p<0||p>L.length-1) return 0;
e=L.data[p];
for(i=p;i<L.length-1;i++)
L.data[i]=L.data[i+1];
--(L.length);
return 1;
}
6.求指定位置的元素算法
用e返回指定位置p(0<=p<=L.length-1)上的元素
int getElem(Sqlist &L,int p,int &e)
{
if(p<0||p>L.length-1) return 0;
e=L.data[p];
return 1;
}
