🎉🎉🎉哈喽!!!大家好,这里是禾子日月
🎆欢迎各位小伙伴🖱️关注🖱️点赞🖱️留言🖱️收藏
🎆我坚信努力奔跑才能与幸运不期而遇。
最近学习了顺序表,想再巩固一遍,所以我用顺序表尝试写了一个菜单。
首先我们来了解一下这个菜单的功能:
1、头插 2、头删
3、尾插 4、尾删
5、打印 -1、退出
以上就是我们今天要写的菜单的全部功能,现在我们可以试着写一下。
相信你一定可以写出来,如果写不出来也没有关系,请接着往下看。
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
typedef int SLDataType;
typedef struct SeqList
{
SLDataType *a;
int size;
int capacity;
}SL;
//顺序表初始化
void SeqListInit(SL *ps)
{
ps->a = NULL;
ps->size = ps->capacity =0;
}
//内存检查
void SLCheckCapacity(SL *ps)
{
if(ps->size ==ps->capacity )
{
int NewCapacity;
NewCapacity= ps->capacity== 0 ? 4 : ps->capacity*2;
SLDataType *tmp=(SLDataType *)realloc(ps->a ,NewCapacity*sizeof(SLDataType));
if(tmp==0)
{
printf("realloc fail\n");
exit(-1);
}
ps->a = tmp;
ps->capacity = NewCapacity;
}
}
//尾插
void SeqListPushBack(SL *ps,int x)
{
SLCheckCapacity(ps);
ps->a[ps->size]=x;
ps->size++;
}
//头插
void SeqListPushFront(SL *ps,int x)
{
SLCheckCapacity(ps);
int end=ps->size-1;
while(end>=0)
{
ps->a[end+1]=ps->a[end];
end--;
}
ps->a[0]=x;
ps->size++;
}
//尾删
void SeqListPopBack(SL *ps)
{
if(ps->size >0)
{
ps->size--;
}
}
//头删
void SeqListPopFront(SL *ps)
{
int begin=1;
while(begin<ps->size)
{
ps->a[begin-1]=ps->a[begin];
begin++;
}
ps->size--;
}
void SeqListDestory(SL *ps)//销毁内存
{
free(ps->a);
ps->a ==NULL;
ps->capacity = ps->size =0;
}
//打印顺序表
void SeqListPrint(SL *ps)
{
for(int i=0;i<ps->size;i++)
{
printf("%d ",ps->a[i]);
}
}
//菜单
void Menu()
{
printf("_______________________________\n");
printf("请选择你的操作:\n");
printf("1、头插 2、头删\n");
printf("3、尾插 4、尾删\n");
printf("5、打印 -1、退出\n");
printf("_______________________________\n");
}
void MenuTest()
{
SL sl;
SeqListInit(&sl);
int input = 0;
int x;
while (input !=-1)
{
Menu();
scanf("%d",&input);
switch(input)
{
case 1:
printf("请输入你要插入的数据,以-1结束:\n");
scanf("%d",&x);
while(x!=-1)
{
SeqListPushFront(&sl,x);
scanf("%d",&x);
}
break;
case 2:
SeqListPopFront(&sl);
break;
case 3:
printf("请输入你要插入的数据,以-1结束:\n");
scanf("%d",&x);
while(x!=-1)
{
SeqListPushBack(&sl,x);
scanf("%d",&x);
}
break;
case 4:
SeqListPopBack(&sl);
break;
case 5:
SeqListPrint(&sl);
printf("\n");
break;
default:
printf("无此选项,请重新输入\n");
break;
}
}
SeqListDestory(&sl);
}
int main()
{
MenuTest();
return 0;
}
写在最后
以上就是本篇文章全部内容,作者知识水平有限,若有什么错误或者需改进之处希望大家指出,若是你有更好的代码希望能给博主留言,博主希望能在CSDN与各位一起进步,感谢大家观看!