本文主要包含以下几点:
1)自定义顺序表
顺序表声明代码如下(C语言实现):
typedef struct Table{
int *head; // 动态数组
int length; // 记录顺序表长度
int size; // 记录顺序表内存大小
} table;
2)初始化顺序表
顺序表初始化代码如下(C语言实现):
table initTable(){
table t; // 定义顺序表名称t
t.head = (int*)malloc(Size* sizeof(int)); // 动态申请存储空间
if (!t.head){
// 申请存储空间失败
printf("内存分配失败,初始化失败!\n");
exit(0);
} else{
printf("初始化成功!\n");
}
t.length = 0; // 初始化顺序表长度为0
t.size = Size; // 初始化顺序表内存大小为Size
return t;
}
3)顺序表插入元素
顺序表插入元素代码如下(C语言实现):elem表示插入的元素,position表示插入的位置。
table insertTable(table t, int elem, int position){
// 判断位置是否正确
if (1 > position || position > t.length+1){
printf("插入位置异常!\n");
return t;
}
// 顺序表长度等于内存大小时,插入需要动态增大数组空间
if (t.length == t.size){
t.head = (int *)realloc(t.head,(t.size + 1)* sizeof(int));
// 分配失败返回
if (!t.head){
printf("分配数组空间失败!\n");
return t;
}
// 申请成功,内存大小加1
t.size++;
printf("分配数组空间成功!\n");
}
// 开始插入:将position及其后面位置往后移一个位置
for (int i = t.length-1; i >= position-1; i--) {
t.head[i+1] = t.head[i];
}
// 移动完成之后,插入该元素,插入的位置对应数组下标是position-1
t.head[position-1] = elem;
// 插入成功,顺序表长度加1
t.length++;
return t;
}
4)顺序表删除元素
顺序表删除元素代码如下(C语言实现):position表示删除的位置。
table deleteTable(table t, int position){
if