您的位置:首页 > 汽车 > 时评 > 徐州企业建站系统模板_建站之星免费_网站搜索引擎优化工具_重庆广告公司

徐州企业建站系统模板_建站之星免费_网站搜索引擎优化工具_重庆广告公司

2025/8/31 18:20:31 来源:https://blog.csdn.net/2301_80548884/article/details/146281044  浏览:    关键词:徐州企业建站系统模板_建站之星免费_网站搜索引擎优化工具_重庆广告公司
徐州企业建站系统模板_建站之星免费_网站搜索引擎优化工具_重庆广告公司

栈(Stack)是一种遵循后进先出(LIFO)原则的线性数据结构。栈的操作主要包括入栈(Push)出栈(Pop)

栈的应用:

1、中缀表达式转后缀表达式 

2、进制转换(直接取余得到的顺序和结果相反,通过栈来调转)

3、款项金额转中文大写

4、编辑器中括号的匹配

实现方式:

-顺序栈

-链表栈

本文使用顺序栈,实现二进制转换

// 顺序存储的栈
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>typedef int Elemtype;
typedef struct stack
{Elemtype data[32];int top; // 栈顶下标
} Stack;void Init(Stack *s);             // 初始化
void Push(Stack *s, Elemtype e); // 压栈
Elemtype Pop(Stack *s);          // 弹栈
int Empty(Stack *s);            // 判断是否为空
void Clean(Stack *s);            // 清空栈
Elemtype peek(Stack *s);         // 读取栈顶元素
int main(int argc, char const *argv[])
{Stack *s=(Stack *)malloc(sizeof(Stack));Init(s);//初始化int n=38;//对38进行二进制转化while (n!=0)//n不等于0 循环{Push(s,n%2);//对二取余,结果进栈n/=2;//除二}while (Empty(s)){printf("%d",Pop(s));//通过翻转顺序后,打印}return 0;
}
void Init(Stack *s)
{s->top=-1;//将栈顶置为-1
}
void Push(Stack *s, Elemtype e)
{s->data[++s->top]=e;//先自增栈顶位置,再将目标数值入栈
}
Elemtype Pop(Stack *s)
{return s->data[s->top--];    
}
int Empty(Stack *s)
{if(s->top==-1)//栈为空的充条件{printf("栈空");return 0;}return 1;
}
void Clean(Stack *s)
{s->top=-1;//将栈顶置为-1,下次入栈时,栈顶先自增,再覆盖原有的置,从而做到清栈
}
Elemtype peek(Stack *s)
{return s->data[s->top];//返回以栈顶为下标的元素
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com