顺序表
线性表的顺序存储结构。特点是逻辑上相邻的数据元素,其物理存储次序也相同。
结构组成
typedef struct{
ElemType data[maxsize] // 所存放的最大数据个数
int length; // 所存放元素的个数
} Serlist;
基础操作
1,线性表的初始化操作
SeqList * Init()
{
SeqList * p;
p=(SeqList *)malloc(sizeof(SeqList));
if(p==NULL)
{
printf("内存分配失败!\n");
exit(0);
}
else
{
p->len=0;
return p;
}
}
2,线性表元素的添加
int add(SeqList * L1, Elemtype x)
{
if(L1->len==M)
{
printf("表已满无法插入\n");
return -1;
}
else
{
L1->data[L1->len]=x;
L1->len++;
return 1;
}
}
3,线性表的插入
int Insert(SeqList * L1, Elemtype x,int i)
{
int j;
if(i<1||i>L1->len+1||L1->len==M)
{
printf("无法插入,参数不对\n");
return -1;
}
else
{
for(j=L1->len-1;j>=i-1;j--)
L1->data[j+1]=L1->data[j];
L1->data[i-1]=x;
L1->len++;
return 1;
}
}
4,线性表元素的删除
int del(SeqList * L1,int i)
{
int j;
if(i<1||i>L1->len)
{
printf("无法删除,参数不对\n");
return -1;
}
else
{
for(j=i;j<=L1->len;j++)
L1->data[j-1]=L1->data[j];
L1->len--;
return 1;
}
}
5,线性表元素的查找
int find(SeqList * L1, Elemtype x)
{
int i;
for(i=0;i<=L1->len-1;i++)
{
if(L1->data[i]==x)
{
return i+1;
break;
}
}
if(i>=L1->len)
return -1;
}
6,线性表元素的输出
void out(SeqList * L1) { int i; for(i=0;i<=L1->len-1;i++) printf("%5d",L1->data[i]); printf("\n"); }