算法与数据结构之栈的顺序存储

简介:
#include<stdio.h>
#include<windows.h>
#include<malloc.h>
#define maxsize 50
typedef int elemtype;
typedef struct //定义
{
elemtype data[maxsize];
int top;

}sqstack;


void initstack(sqstack *&s) //初始化
{
s=(sqstack *)malloc(sizeof(sqstack));
s->top=-1;

}


void push(sqstack *&s) //进栈
{
char e;
getchar();
printf("请输入需进栈的元素:");
scanf("%c",&e);
if(s->top>maxsize-1)
printf("栈满,错误!\n");
else
{
s->top++;
s->data[s->top]=e;
printf("进栈成功\n");
}

}


void gettop(sqstack *s) //取栈顶元素
{
char t;
if(s->top==-1)
printf("栈空,取值失败!\n");
else
{
t=s->data[s->top];
printf("取值成功,栈顶元素为:%c\n",t);
}

}


void stackempty(sqstack *s) //判断栈是否为空
{
if(s->top==-1)
printf("栈为空\n");
else
printf("栈不为空\n");

}


void pop(sqstack *&s) //出栈
{
char e;
if(s->top==-1)
printf("栈为空,出栈失败\n");
else
{
e=s->data[s->top];
s->top--;
printf("出栈成功,出栈元素为:%c\n",e);
}

}


int length(sqstack *s) //求栈长
{
if(s->top==-1)
return(-1);
else
return(s->top+1);

}


void destroy(sqstack *&s) //销毁栈
{
char t;
getchar();
printf("确定要销毁栈请输入y 否则不销毁:");
scanf("%c",&t);
if(t=='y')
{
free(s);
printf("销毁成功\n");
exit(0);
}
else
printf("栈未销毁\n");

}


void output(sqstack *s)
{
int m,n=s->top;
m=length(s)+1;
if(s->top==-1)
printf("栈为空\n");
else
{
printf("出栈序列为:");
for(;m>0;m--)
{
printf(" %c",s->data[s->top]);
s->top--;
}
printf("\n");
s->top=n;
}

}


void main()
{
sqstack *s;

int m;
initstack(s);
while(1)
{
printf("请选择:");
printf(" 1 进栈\n");
printf(" 2 判断栈是否为空\n");
printf(" 3 取栈顶元素\n");
printf(" 4 出栈\n");
printf(" 5 销毁栈\n");
printf(" 6 求栈的长度\n");
printf(" 7 输出出栈序列\n");
printf(" 8 退出\n");
scanf("%d",&m);
switch(m)
{
case 1:push(s);break;
case 2:stackempty(s);break;
case 3:gettop(s);break;
case 4:pop(s);break;
case 5:destroy(s);break;
case 6:printf("栈的长度为%d\n",length(s));break;
case 7:output(s);break;
case 8:exit(0);
default:printf("输入错误,请重新输入\n");
}
}
}
目录
相关文章
|
17天前
|
消息中间件 存储 搜索推荐
深入理解栈和队列(二):队列
深入理解栈和队列(二):队列
29 0
|
18天前
|
存储 算法 索引
【算法与数据结构】队列的实现详解
【算法与数据结构】队列的实现详解
|
22天前
|
算法
【算法与数据结构】二叉树(前中后)序遍历2
【算法与数据结构】二叉树(前中后)序遍历
|
10天前
|
存储 算法 调度
数据结构期末复习(3)栈和队列
数据结构期末复习(3)栈和队列
17 0
|
10天前
|
存储 机器学习/深度学习 算法
上机实验三 图的最小生成树算法设计 西安石油大学数据结构
上机实验三 图的最小生成树算法设计 西安石油大学数据结构
19 1
|
18天前
|
算法 索引
【算法与数据结构】深入二叉树实现超详解(全源码优化)
【算法与数据结构】深入二叉树实现超详解(全源码优化)
|
18天前
|
存储 算法
【算法与数据结构】深入解析二叉树(二)之堆结构实现
【算法与数据结构】深入解析二叉树(二)之堆结构实现
|
22天前
|
算法 C语言
【算法与数据结构】 C语言实现单链表队列详解2
【算法与数据结构】 C语言实现单链表队列详解
|
22天前
|
存储 算法 C语言
【算法与数据结构】 C语言实现单链表队列详解1
【算法与数据结构】 C语言实现单链表队列详解
|
1月前
|
传感器 算法 计算机视觉
基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
该内容是关于一个基于肤色模型和中值滤波的手部检测算法的描述,包括算法的运行效果图和所使用的软件版本(matlab2022a, vivado2019.2)。算法分为肤色分割和中值滤波两步,其中肤色模型在YCbCr色彩空间定义,中值滤波用于去除噪声。提供了一段核心程序代码,用于处理图像数据并在FPGA上实现。最终,检测结果输出到&quot;hand.txt&quot;文件。