栈的基本功能实现(C语言)
来源:互联网 发布:dc 大事件 知乎 编辑:程序博客网 时间:2024/05/01 15:10
1.栈的定义
栈(stack)是一种仅允许在一端插入和删除运算的线性表。栈中允许进行插入和删除的一端,称为栈顶(top)。栈顶的第一个元素称为栈顶元素。栈中不可以插入和删除的那一端,称为栈底(bottom)。在一个栈中插入新元素,即把新元素放到当前栈顶元素的上面,使其成为新的栈顶元素,这一操作称为进栈,入栈或压栈(push)。从一个栈中删除一个元素,把栈顶元素删除掉,使其下面的元素成为新的栈顶元素,称为出栈或退栈(pop)。
注意:插入或删除都只能在栈顶一端进行。由于栈的插入或删除只能在栈顶一端进行,后进本栈的元素必定先出栈,所以栈又称为后进先出的线性表(last in first out)(简称LIFO结构)
2.代码实现#include<stdio.h>
typedef int ElemType;#define Maxsize 5 //栈最多存放的元素个数
typedef struct {
ElemType data[Maxsize];
int top;
}SqStack;
//初始化栈
void InitStack(SqStack &s){
s.top = -1;
}
//判断栈是否为空
bool StackEmpty(SqStack &s){
if(s.top==-1){
return true;
}
else return false;
}
//进栈
void Push(SqStack &s,ElemType e){
if(s.top!=Maxsize-1){
s.data[++s.top]=e;
}
else printf("Stack is full!\n");
}
//出栈
void Pop(SqStack &s,ElemType &e){
if(StackEmpty(s))
{
printf("Empty\n");
}
else{
e=s.data[s.top--];
}
}
//获取栈顶元素
void GetTop(SqStack s,ElemType e){
if(StackEmpty(s))
{
printf("Empty\n");
}
else{
e=s.data[s.top];
}
}
//打印栈
void PrintStack(SqStack s){
if(StackEmpty(s)){
printf("Empty\n");
}
else {
int i;
for(i=0;i<=s.top;i++){
printf("%d ",s.data[i]);
}
printf("\n");
}
}
int main(){
SqStack s;
int n=1,e;
printf("------------\n");
printf("--1.初始化--\n");
printf("--2.判断空--\n");
printf("--3.进栈----\n");
printf("--4.出栈----\n");
printf("--5.读取栈顶\n");
printf("--6.打印栈\n");
printf("--0.退出----\n");
while(n!=0){
printf("请选择功能:");
scanf("%d",&n);
switch(n){
case 1:
InitStack(s); break;
case 2:
if(StackEmpty(s)){
printf("Empty\n");
}
else printf("Not empty\n");
break;
case 3:
scanf("%d",&e);
Push(s,e);
break;
case 4:
Pop(s,e);
printf("%d\n",e);
break;
case 5:
GetTop(s,e);
printf("%d\n",e);
break;
case 6:
PrintStack(s);
case 0: break;
default: printf("请输入正确的功能代码!\n");
}
}
printf("退出程序成功!");
}
阅读全文
0 0
- 栈的基本功能实现(C语言)
- 数据结构C 语言描述——实现栈的基本功能
- 小游戏:扫雷 (C语言实现扫雷的基本功能)
- 线性表基本功能的c语言实现
- 【C语言】实现Linux下的cp命令的基本功能
- 【C语言】实现Linux下的last命令的基本功能
- c语言单向链表的基本功能的实现
- 二叉树的基本功能实现(c++)
- c语言实现单链表的及各项基本功能
- C实现数组的基本功能
- 我自己编的一个c语言小程序:银行基本功能的实现
- 顺序栈基本功能的实现
- 数据结构C语言版--单链表的基本功能实现
- C++链式栈的简单实现(只有基本功能)
- 链式栈基本功能的简单实现
- C++实现顺序栈的基本功能
- 数据结构之栈的基本功能实现
- C++实现顺序栈的基本功能
- A. Table----思维题
- 从技术原理上解释火狐启动速度慢的原因
- hdu 1068 最大独立集
- LightOJ1370 Bi-shoe and Phi-shoe
- 快速排序,快速搞定
- 栈的基本功能实现(C语言)
- ASCII码一览表
- lniux svn清除和重新设置 小知识
- HDU 6503 TrickGCD
- UVA5009 Error Curves三分
- tomcat 性能优化
- POJ2001 Shortest Prefixes 动态字典树实现
- Educational Codeforces Round 26 D (dp好题)
- 【bzoj1078】[SCOI2008]斜堆