学习数据结构和算法的第8天

顺序表的实现

进行头插

eg:在数组 1 2 3 4 5的开头插入-1

变成-1 1 2 3 4 5

#include<stdio.h>
typedef struct SeqList {SLDataType a[100]; // 假设顺序表最大容量为100int size; // 当前顺序表的大小
} SL;
void SeqListPushFront(SL* ps, SLDataType x)
{int end = ps->size-1;while (end >= 0) {ps->a[end+1] = ps->a[end];--end;}ps->a[0] = x;ps->size++;
}
int main()
{SL seqList; // 创建一个顺序表对象seqList.size = 0; // 初始化顺序表的大小为0// 向顺序表的开头插入元素SeqListPushFront(&seqList, 10);SeqListPushFront(&seqList, 20);SeqListPushFront(&seqList, 30);// 打印顺序表中的元素for (int i = 0; i < seqList.size; i++) {printf("%d ", seqList.a[i]);}printf("\n");return 0;
}

头删

eg:数组1 2 3 4 5

删去1

#include <stdio.h>
typedef struct SeqList {SLDataType a[100];int size;
} SL;
void SeqListRemoveFront(SL* ps)
{if (ps->size <= 0) {// 顺序表为空,无法进行头删操作return;}for (int i = 0; i < ps->size - 1; i++) {ps->a[i] = ps->a[i + 1];}ps->size--;
}
int main()
{SL seqList;seqList.size = 0;// 添加一些元素到顺序表seqList.a[0] = 10;seqList.a[1] = 20;seqList.a[2] = 30;seqList.size = 3;// 执行头删操作SeqListRemoveFront(&seqList);// 打印顺序表中的元素for (int i = 0; i < seqList.size; i++) {printf("%d ", seqList.a[i]);}printf("\n");return 0;
}