c语言堆栈基本代码入栈出栈_C/C++语言栈的出栈入栈操作实现(完整代码)
/* 完整代码 */
#include using namespace std;
#define MAX_SIZE 5 //数组大小
struct stack {
int top;
int ans[MAX_SIZE];
};
typedef struct stack Stack;
void InitStack(Stack *ptr) { //初始化栈
ptr->top = 0;
}
bool StackFull (Stack *ptr) { //判断栈是否满
if (ptr->top < MAX_SIZE)
return false;
else
return true;
}
bool StackEmpty (Stack *ptr) { //判断栈是否空
if (ptr->top == 0)
return true;
else
return false;
}
void Push(Stack *ptr, int item) { //入栈
if (StackFull(ptr))
cerr << "栈满,不能入栈!" << endl;
else {
ptr->ans[ptr->top] = item;
ptr->top ++;
}
}
int GetTop(Stack *ptr) { //返回栈顶值
return ptr->ans[ptr->top - 1];
}
int Pop(Stack *ptr) { //出栈,返回栈顶值
if (StackEmpty(ptr)) {
cerr << "栈空,不能出栈!" << endl;
return -1;
}
else
return ptr->ans[--ptr->top];
}
int StackSize (Stack *ptr) { //返回栈长度
if (ptr->top == 0)
return 0;
else
return ptr->top;
}
void ClearStack(Stack *ptr) { //清空栈
ptr->top = 0;
}
int main(){
Stack *ptr = (Stack *)malloc(sizeof(Stack));
InitStack(ptr); //初始化栈
//入栈
Push(ptr, 4);
Push(ptr, 10);
Push(ptr, 21);
Push(ptr, 19);
Push(ptr, 12);
Push(ptr, 13);
cout << "当前栈顶值为: " << GetTop(ptr) << endl;
cout << "当前栈顶指针为: " << ptr->top << endl; //输出栈顶值
cout << "当前栈长度为: " << StackSize(ptr) << endl;
cout << "栈顶出队: " << Pop(ptr) << endl; //出栈
cout << "当前栈长度为: " << StackSize(ptr) << endl;
ClearStack(ptr); //清空栈
cout << "清空栈后栈的长度为: " << StackSize(ptr) << endl;
return 0;
}
运行结果:
栈满,不能入栈!
当前栈顶值为: 12
当前栈顶指针为: 5
当前栈长度为: 5
栈顶出队: 12
当前栈长度为: 4
清空栈后栈的长度为: 0
c语言堆栈基本代码入栈出栈_C/C++语言栈的出栈入栈操作实现(完整代码)相关推荐
- c语言堆栈基本代码入栈出栈_链栈基本操作(入栈和出栈)C语言详解
链,即用 链栈的实现思路同 图 1 链栈示意图 将链表头部作为栈顶的一端,可以避免在实现数据 "入栈" 和 "出栈" 操作时做大量遍历链表的耗时操作. 链表的头 ...
- c语言堆栈基本代码入栈出栈_顺序栈基本操作(入栈和出栈)C语言详解
顺序,即用{1,2,3,4},存储状态如 图 1 顺序表存储 {1,2,3,4} 同样,使用栈存储结构存储 {1,2,3,4},其存储状态如图 2 所示: 图 2 栈结构存储 {1,2,3,4} 通过 ...
- c语言堆栈基本代码入栈出栈_几道和「堆栈、队列」有关的面试算法题
题目一:有效的括号 问题描述 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 解题思路 这道题让我们验证输入的字符串是否为括号字符串,包括大括号,中括号 ...
- c语言堆栈基本代码入栈出栈_c语言的简单的进栈出栈
这个代码运行时只能输入4个以内的数有输出4个以上就没有输出了求大神看看#include#include#defineStack_Size50typedefstructSeqstack{intelem[ ...
- c语言堆栈基本代码入栈出栈_C语言实现常用数据结构:栈-顺序栈实现(第6篇)...
栈 栈是一种特殊的线性表,其特性是仅能在表尾进行插入或删除的操作,栈中元素的操作是按照后进先出的原则进行,因此栈又称为后进先出线性表(Last In First Out,LIFO数据结构).栈顶:表尾 ...
- 语言堆栈入门——堆和栈的区别
原文:http://student.csdn.net/link.php?url=http://www.top-e.org%2Fjiaoshi%2Fhtml%2F427.html 格式和部分内容稍作修改 ...
- C语言堆栈入门 —— 堆和栈的区别
在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到.但对于很多的初学着来说,堆栈是一个很模糊的概念.堆栈:一种数据结构.一个在程序运行时用于存放的地方,这可能是很多初学者的认识 ...
- C语言堆栈入门——堆和栈的区别
C语言堆栈入门--堆和栈的区别 2010-05-09 22:28:53| 分类: C/C++开发|举报|字号 订阅 下载LOFTER客户端 在计算机领域,堆栈是一个不容忽视的概念,我们编写 ...
- C语言-堆栈 什么是栈?一篇文章带你了解…
一.栈的介绍 栈又名堆栈,它是一种运算受限的线性表. 栈的特点:限定仅在表尾进行插入和删除操作的线性表.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈,它是把新元素放到 ...
最新文章
- oracle 截取字段长度substr
- 2017年前端面试题整理汇总100题
- BeautifulSoup安装及其应用
- 椭圆曲线加密算法(ECC)原理和C++实现源码(摘录)
- 无影云电脑居家办公最佳实践(便捷账号)
- IllegalArgumentException:argument type mismatch
- SpringBoot @Cacheable缓存入门程序
- 《深入理解Elasticsearch(原书第2版)》一第1章
- [json]Json 入门
- Fedora 14 Error: Cannot retrieve repository metadata (repomd.xml) for repository
- linux7设置广播,中标麒麟Linux7 如何关闭广播消息
- 千字长文讲解系统架构,系统设计看这篇就够了
- linux中的nm命令简介【转】
- 结合北斗PPP_B2b 导航电文进行精密定位(PPP)
- 网络原理之TCP/UDP协议
- 如何将硕大笨重的git仓库拆分成灵活轻巧的模块小仓库
- php 访问 HTTP 网址
- Ubuntu16.04下安装类似于windows下微信软件,非网页版微信(内附安装包和详细安装指令)
- 在进行计算机软件著作权维权时必须要进行源代码比对么?
- 能用计算机二级题备考一级吗,计算机二级证有没有用?真题难度系数大不大?...
热门文章
- Oralce定时任务实际应用
- 图表 stack属性_想快速了解MEAN Stack吗? 这是带有有用图表的文档。
- reddit_Reddit如何大规模构建功能:采访其工程副总裁
- Proxy error: Could not proxy request /api/ from localhost:8080 to http://localhost:80
- python数码时钟代码_python实现简易数码时钟
- debian下安装python虚拟环境
- Java-时间复杂度和空间复杂度
- Python面向对象中的self到底是什么?
- Python 中 3 个不可思议的返回
- python基础-字典的增删改查