顺序表的结构体设计:
#define MAXSIZE 10 //顺序表一般固定大小
struct SeqList
{
int data[MAXSIZE];
int capacity; //顺序表容量大小
int cursize; //顺序表中有效数据节点个数
}SeqList , *PSeqList; //结构体指针和结构体别名
按位置删除:
bool Eraser(PSeqList plist, int pos)
{
assert(plist != NULL);
if (pos < 0 || pos > plist->cursize - 1) //这块为什么要写cursize-1呢 下面图片有解释
{
return false;
}
for (int i = pos; i < plist->cursize -1 ; i++) //下图对这个有解释
{
plist->data[i] = plist->data[i + 1];
}
plist->cursize += 1;
return true;
}
下图是对于代码对边界条件处理的一些讲解 这种东西只要把握住了边界条件 还是很简单的 :
尾删: 上面已经给按位置删除函数写出来了 尾删相当于 按照最后一个数据进行删除 这样的话 调用按位置删除函数 提供高代码的复用性
void Eraser_Front(PSeqList plist)
{
assert(plist != NULL);
Eraser(plist , plist->cursize-1);
}
头删:
void Eraser_Back(PSeqList plist)
{
assert(plist != NULL);
Eraser(plist , 0);
}