数据结构教材绪论后第一章就是线性表,顺序表是线性表最基础的一种,接下来就用C语言实现基本功能
首先用结构体构造一个模型
#define MaxSize 50
typedef int Elemtype;
typedef struct
{
Elemtype data[MaxSize];
int length;
} SqList;
然后创建一个顺序表
void CreateList(SqList *&L, Elemtype a[], int n) //建立顺序表
{
int i=0,k=0;
L=(SqList *)malloc(sizeof(SqList));//malloc一块区域
while(i<n) //依次给data数组赋值
{
L->data[i]=a[i];
k++; i++; //k记录长度
}
L->length=k;
}
顺序表的基本操作(滑稽)
销毁顺序表,判断是否为空,求顺序表长度,输出顺序表,按顺序查找,按元素查找,插入元素,删除元素等。
void DestroyList(SqList *&L) //销毁顺序表
{
free(L);
}
bool ListEmpty(SqList *L) //判断顺序表是否非空
{
return L->length==0;
}
int ListLength(SqList *L) //求顺序表的长度
{
return L->length;
}
void DispList(SqList *L) //输出顺序表
{
for(int i=0;i<L->length;i++)
printf("%d",L->data[i]);
printf("\n");
}
bool GetElem(SqList *L,int i,Elemtype e) //获得位置为i的元素值
{
if(i<1||i>MaxSize) //如果越界则返回false
return false;
e=L->data[i-1];
return true;
}
int LocateElem(SqList *L, Elemtype e) //查找元素e的位置
{
int i=0;
while(i<L->length&&L->data[i]!=e)
i++;
if(i>=L->length)
return 0;
else
return i+1;
}
bool ListInsert(SqList *&L,int i,Elemtype e) //插入元素
{
int j;
if(i<1||i>L->length)
return false;
i--; //注意要减1
for(j=L->length-1;j>i;j--)
L->data[j]=L->data[j-1];
L->data[i]=e;
L->length++;
return true;
}
bool ListDelete(SqList *L,int i,Elemtype e) //删除元素
{
int j;
if(i<1||i>L->length) //i如果越界则返回false
return false;
i--; //注意要-1
for(j=i;j<L->length-1;j++) //从i的下一个元素开始,每个元素向前移动一个
L->data[j]=L->data[j+1];
L->length--;
return true;
}
以上就是顺序表的基本操作