目录
之前的函数请看顺序表的实现(上)。
子函数
查
int SeqListFind(SL* ps, SQDataType x)
{
for (int i = 0; i < ps->size; ++i)
{
if (ps->a[i] == x)
{
return i;
}
}
return -1;
}
改
void SeqListModity(SL* ps, int pos, SQDataType x)
{
assert(pos < ps->size);
ps->a[pos] = x;
}
释放内存
void SeqListDestory(SL* ps)
{
free(ps->a);
ps->a = NULL;
ps->capacity = ps->size = 0;
}
部分菜单
void menu()
{
printf("************************************************\n");
printf("1.尾插数据, 2.头插数据\n");
printf("3.尾删数据, 4.头删数据\n");
printf("5.打印数据, -1.退出\n");
printf("************************************************\n");
printf("请输入你操作选项:");
}
main.c
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:6031)
#include "SeqList.h"
#include <stdio.h>
void TestSeqList1() //测试顺序表
{
SL s; //定义一个结构体变量
SeqListInit(&s); //初始化顺序表
SeqListPushFront(&s, 1); //插入
SeqListPushFront(&s, 2);
SeqListPushFront(&s, 3);
SeqListPushFront(&s, 4);
SeqListInsert(&s, 1, 7);
SeqListPrint(&s); //打印
SeqListDestory(&s);
}
//菜单
void menu()
{
printf("************************************************\n");
printf("1.尾插数据, 2.头插数据\n");
printf("3.尾删数据, 4.头删数据\n");
printf("5.打印数据, -1.退出\n");
printf("************************************************\n");
printf("请输入你操作选项:");
}
int main()
{
SL s;
SeqListInit(&s);
int option = 0;
int x = 0;
while (option != -1)
{
menu();
scanf("%d", &option);
switch (option)
{
case 1 :
printf("请输入你要插入的数据,以-1结束\n");
do
{
scanf("%d", &x);
if (x != -1)
{
SeqListPushBack(&s, x);
}
} while (x != -1);
break;
case 2:
printf("请输入你要插入的数据,以-1结束\n");
do
{
scanf("%d", &x);
if (x != -1)
{
SeqListPushFront(&s, x);
}
} while (x != -1);
break;
case 3:
break;
case 4:
break;
case 5:
SeqListPrint(&s);
break;
default:
break;
}
}
SeqListDestory(&s);
return 0;
}
顺序表是线性表的一种,它也是通讯录的底层原理,通过这篇文章以及上篇文章,我们实现了新顺序表的增删查改。 以main函数为终点,开始数据结构的旅程!
在main函数里,开头和结尾要以顺序表的初始化为开始,顺序表的内存释放为结尾。
switch函数我没有写完整,读者可以根据菜单自行加入!