数组实现线性表
#include "stdio.h"
typedef struct
{
int data[20];
int length;
}Sqlist;
//返回下标
int LocateElem(Sqlist L,int x)
{
int i;
for(i=1;i<=L.length;i++)
{
if(x<L.data[i])
{
return i;
}
}
return i;
}
//插入元素的算法
void insert(Sqlist &L,int x)
{
int p,i;
p=LocateElem(L,x);
for(i=L.length;i>=p;i--)
{
L.data[i+1]=L.data[i];
}
L.data[p]=x;
++(L.length);
}
//查找第一个元素值为x的元素
int chazhao(Sqlist L,int x)
{
for(int i=1;i<=L.length;i++)
if(x==L.data[i])
return i;
return 0;
}
//在顺序表第p个位置插入新的元素e,失败返回0
int chaRu(Sqlist &L,int p,int e)
{
if(p>L.length+1||p<1)
return 0;
else
{
for(int i=L.length;i>=p;i--)
{
L.data[i+1]=L.data[i];
}
L.data[p]=e;
L.length++;
return 1;
}
}
//删除顺序表下标为P的元素,成功返回1,失败返回0;
int shanChu(Sqlist &L,int p)
{
if(p<1||p>L.length)
return 0;
else
{
for(int i=p;i<L.length;i++)
L.data[i]=L.data[i+1];
L.length--;
return 1;
}
}
void main()
{
Sqlist L;
L.length=10;
for(int i=1;i<=L.length;i++)
{
L.data[i]=i;
}
for(int i=1;i<=L.length;i++)
{
printf("%d ",L.data[i]);
}
insert(L,5);
printf("\n");
for(int i=1;i<=L.length;i++)
{
printf("%d ",L.data[i]);
}
int p;
p=chazhao(L,7);
printf("\n%d ",p);
chaRu(L,2,30);
for(int i=1;i<=L.length;i++)
{
printf("%d ",L.data[i]);
}
shanChu(L,2);
printf("\n");
for(int i=1;i<=L.length;i++)
{
printf("%d ",L.data[i]);
}
}