基本概念
设计与实现
- 插入元素算法
判断线性表是否合法
判断插入位置是否合法
把最后一个元素到插入位置的元素后移一个位置
将新元素插入
线性表长度加1 - 获取元素操作
判断线性表是否合法
判断位置是否合法
直接通过数组下标的方式获取元素 - 删除元素算法
判断线性表是否合法
判断删除位置是否合法
将元素取出
将删除位置后的元素分别向前移动一个位置
线性表长度减1
链表顺序存储插入算法和删除算法图解
优点与缺点
优点:
无需为线性表中的逻辑关系增加额外的空间
可以快速的获取表中合法位置的元素
缺点:
插入和删除操作需要移动大量元素
当线性表长度变化较大时难以确定存储空间的容量
//线性表顺序存储设计与实现测试框架
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "seqlist.h"
typedef struct Teacher
{
int age;
char name[64];
}Teacher;
int main(void)
{
int ret = 0;
int i = 0;
SeqList* list = NULL;
Teacher t1, t2, t3, t4, t5;
t1.age = 31;
t2.age = 32;
t3.age = 33;
t4.age = 34;
t5.age = 35;
list = SeqList_Create(10);
if (list == NULL)
{
ret = -1;
printf("func SeqList_Create() ret:%d", ret);
return ret;
}
ret = SeqList_Insert(list, (SeqListNode*)&t1, 0);//头插法
ret = SeqList_Insert(list, (SeqListNode*)&t2, 0);//头插法
ret = SeqList_Insert(list, (SeqListNode*)&t3, 0);//头插法
ret = SeqList_Insert(list, (SeqListNode*)&t4, 0);//头插法
ret = SeqList_Insert(list, (SeqListNode*)&t5, 0