实现顺序表分为以下几步:
1.先写出封装顺序表结构的结构体;
2.初始化顺序表;
3.增删查改;
4.顺序表的逆置等。
#define MAX_SIZE 100
typedef int DataType;
typedef struct SeqList
{
DataType data[MAX_SIZE];
DataType length;
}SeqList;
//顺序表的初始化就是把顺序表初始化成空的顺序表,再把顺序表长度置0即可
void InitSeqList(SeqList *pList)
{
if(pList == NULL)
{
return ;
}
pList->length = 0;
}
//获取顺序表的长度,顺序表元素个数即位顺序表长度
int GetLengthSeqList(SeqList *pList)
{
assert(pList);
return pList->length;
}
//查找顺序表中第i个元素,按顺序查找,判断是否合法即可
int FindiSeqList(SeqList *pList, int i)
{
assert(pList);
if(pList->length < 1 || pList->length > GetLengthSeqList(pList))
{
return 0;
}
//因为数组下标是从0开始的,而数组元素是从1开始的。
return pList->data[i-1];
}
//插入操作:在指定位置i插入一个元素,首先考虑顺序表是不是已经满了,插入位置合不合法,
//其次,插入后,i之后所有元素都必须向后移动移位,必须得从最后一位开始移动,然后将i-1这个数组下标的元素改为d,最后再将顺序表长度+1。
int InsertSeqList(SeqList *pList, int i, DataType d)
{
int k = 0;
assert(pList);
if(pList->length < 1 || pList->length > GetLengthSeqList(pList))
{
return 0;
}
else if(pList->length >= MAX_SIZE)
{
return 0;
}
else
{
//pList->length这里求出来的是元素的个数,元素个数比数组下标大1,正好就i之后所有元素向后移了一位
//这里k=i-1很重要,因为顺序表是从0开始的,如果不-1,我们就找不到i在顺序表中正确的位置,以至于i在顺序表中原本的那个值就无法给后面的元素
for(k &#