数据结构-顺序表的基本操作(C语言实现)
实现的具体功能如下:
- 初始化顺序表
- 显示顺序表
- 尾部插入数据
- 头部插入数据
- 尾部删除数据
- 头部删除数据
- 顺序表扩容
- 查找数据(遍历式)
- 二分查找数据
- 排序
- 按值插入数据
- 按位置插入数据
- 按值删除数据
- 按位置删除数据
- 删除所有(与给定值相等的)数据
- 清空顺序表
- 获取头部元素
- 获取尾部元素
- 获取顺序表长度
- 获取顺序表容量
- 逆置顺序表
- 摧毁顺序表
这一大堆有被吓到吗?22个功能可还行?试问还有比我更全的吗?!!
注:上述个别功能是不暴露给用户的,所以菜单中加上退出总共是20个选项。
源代码如下:
main.c
#include "SeqList.h"
static void Menu()
{
printf("**************************************************\n");
printf("**************************************************\n");
printf("-------- Please enter your choice: --------\n");
printf("-------- 0.Quit 1.Print --------\n");
printf("-------- 2.PushBack 3.PushFront --------\n");
printf("-------- 4.PopBack 5.PopFront --------\n");
printf("-------- 6.Find 7.Sort --------\n");
printf("-------- 8.Val_Insert 9.Pos_Insert --------\n");
printf("-------- 10.Pos_Erase 11.Val_Erase --------\n");
printf("-------- 12.EraseAllVal 13.Clear --------\n");
printf("-------- 14.GetFront 15.GetBack --------\n");
printf("-------- 16.Length 17.Capacity --------\n");
printf("-------- 18.Reverse 19.Find_Binary --------\n");
printf("**************************************************\n");
printf("**************************************************\n");
}
int main()
{
SeqList_t list;//定义结构体变量
InitSeqList(&list);//初始化顺序表
ELEM_TYPE item = 0;
size_t pos = 0;
int select = 1;
while (select){
Menu();
scanf("%d", &select);
if (0 == select){
printf("退出成功!\n");
break;
}
switch (select){
case 1:
SeqListPrint(&list);
break;
case 2:
printf("请输入你要插入的元素(以-1结尾): ");
while (scanf("%d", &item), item != -1){
SeqListPushBack(&list, item);
}
printf("尾部插入元素成功!\n");
break;
case 3:
printf("请输入你要插入的元素(以-1结尾): ");
while (scanf("%d", &item), item != -1){
SeqListPushFront(&list, item);
}
printf("头部插入元素成功!\n");
break;
case 4:
SeqListPopBack(&list);
break;
case 5:
SeqListPopFront(&list);
break;
case 6:
printf("请输入你要查找的数据: ");
scanf("%d", &item);
int ret = SeqListFind(&list, item);
if (ret == -1){
printf("当前顺序表为空,无法进行数据查找!\n");
}
e