/* 完整代码 */

#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++语言栈的出栈入栈操作实现(完整代码)相关推荐

  1. c语言堆栈基本代码入栈出栈_链栈基本操作(入栈和出栈)C语言详解

    链,即用 链栈的实现思路同 图 1 链栈示意图 将链表头部作为栈顶的一端,可以避免在实现数据 "入栈" 和 "出栈" 操作时做大量遍历链表的耗时操作. 链表的头 ...

  2. c语言堆栈基本代码入栈出栈_顺序栈基本操作(入栈和出栈)C语言详解

    顺序,即用{1,2,3,4},存储状态如 图 1 顺序表存储 {1,2,3,4} 同样,使用栈存储结构存储 {1,2,3,4},其存储状态如图 2 所示: 图 2 栈结构存储 {1,2,3,4} 通过 ...

  3. c语言堆栈基本代码入栈出栈_几道和「堆栈、队列」有关的面试算法题

    题目一:有效的括号 问题描述 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 解题思路 这道题让我们验证输入的字符串是否为括号字符串,包括大括号,中括号 ...

  4. c语言堆栈基本代码入栈出栈_c语言的简单的进栈出栈

    这个代码运行时只能输入4个以内的数有输出4个以上就没有输出了求大神看看#include#include#defineStack_Size50typedefstructSeqstack{intelem[ ...

  5. c语言堆栈基本代码入栈出栈_C语言实现常用数据结构:栈-顺序栈实现(第6篇)...

    栈 栈是一种特殊的线性表,其特性是仅能在表尾进行插入或删除的操作,栈中元素的操作是按照后进先出的原则进行,因此栈又称为后进先出线性表(Last In First Out,LIFO数据结构).栈顶:表尾 ...

  6. 语言堆栈入门——堆和栈的区别

    原文:http://student.csdn.net/link.php?url=http://www.top-e.org%2Fjiaoshi%2Fhtml%2F427.html 格式和部分内容稍作修改 ...

  7. C语言堆栈入门 —— 堆和栈的区别

    在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到.但对于很多的初学着来说,堆栈是一个很模糊的概念.堆栈:一种数据结构.一个在程序运行时用于存放的地方,这可能是很多初学者的认识 ...

  8. C语言堆栈入门——堆和栈的区别

    C语言堆栈入门--堆和栈的区别 2010-05-09 22:28:53|  分类: C/C++开发|举报|字号 订阅 下载LOFTER客户端      在计算机领域,堆栈是一个不容忽视的概念,我们编写 ...

  9. C语言-堆栈 什么是栈?一篇文章带你了解…

    一.栈的介绍 栈又名堆栈,它是一种运算受限的线性表. 栈的特点:限定仅在表尾进行插入和删除操作的线性表.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈,它是把新元素放到 ...

最新文章

  1. oracle 截取字段长度substr
  2. 2017年前端面试题整理汇总100题
  3. BeautifulSoup安装及其应用
  4. 椭圆曲线加密算法(ECC)原理和C++实现源码(摘录)
  5. 无影云电脑居家办公最佳实践(便捷账号)
  6. IllegalArgumentException:argument type mismatch
  7. SpringBoot @Cacheable缓存入门程序
  8. 《深入理解Elasticsearch(原书第2版)》一第1章
  9. [json]Json 入门
  10. Fedora 14 Error: Cannot retrieve repository metadata (repomd.xml) for repository
  11. linux7设置广播,中标麒麟Linux7 如何关闭广播消息
  12. 千字长文讲解系统架构,系统设计看这篇就够了
  13. linux中的nm命令简介【转】
  14. 结合北斗PPP_B2b 导航电文进行精密定位(PPP)
  15. 网络原理之TCP/UDP协议
  16. 如何将硕大笨重的git仓库拆分成灵活轻巧的模块小仓库
  17. php 访问 HTTP 网址
  18. Ubuntu16.04下安装类似于windows下微信软件,非网页版微信(内附安装包和详细安装指令)
  19. 在进行计算机软件著作权维权时必须要进行源代码比对么?
  20. 能用计算机二级题备考一级吗,计算机二级证有没有用?真题难度系数大不大?...

热门文章

  1. Oralce定时任务实际应用
  2. 图表 stack属性_想快速了解MEAN Stack吗? 这是带有有用图表的文档。
  3. reddit_Reddit如何大规模构建功能:采访其工程副总裁
  4. Proxy error: Could not proxy request /api/ from localhost:8080 to http://localhost:80
  5. python数码时钟代码_python实现简易数码时钟
  6. debian下安装python虚拟环境
  7. Java-时间复杂度和空间复杂度
  8. Python面向对象中的self到底是什么?
  9. Python 中 3 个不可思议的返回
  10. python基础-字典的增删改查