栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)

栈的更多概念就不赘述了,详情可以参考百度百科。

接下来就来到了我们的动手环节,栈的基本操作包括入栈、出栈、初始化等.

栈顶指针:s.top,初始设置s.top=-1;栈顶元素:s.data[s.top]

进栈操作:栈不满时,栈顶指针先加1,再送值到栈顶元素

出栈操作:栈非空时,先取栈顶元素值,再将栈顶指针减1

栈空条件:s.top==-1;栈满条件:s.top==MaxSize-1;栈长:s.top+1

//栈
#include "stdafx.h"#define MaxSize 10
typedef int ElementType;
typedef struct {
ElementType data[MaxSize];
int top;
}SqStack;/*
初始化栈
*/
void InitStack(SqStack &s) {
s.top=-1;
}/*
判断栈是否为空
*/
bool StackEmpty(SqStack s) {
if (s.top == -1) {
return true;
}
return false;
}/*
入栈
*/
bool PushStack(SqStack &s, ElementType e) {
//判断栈是否已满
if (s.top == MaxSize - 1) {
return false;
}
s.top++;
s.data[s.top] = e;
return true;
}
/*
出栈
*/
ElementType PopStack(SqStack &s) {
//判断是否为空
if (s.top == -1) {
return NULL;
}
ElementType e = s.data[s.top];
s.top--;
return e;
}/*
获取栈顶元素(注:并不是出栈,所以不需要top--)
*/
ElementType GetTop(SqStack s) {
if (s.top == -1) {
return NULL;
}
ElementType e = s.data[s.top];
return e;
}void main() {
SqStack stack;
InitStack(stack);
bool isEmpty = StackEmpty(stack);
//printf_s("isEmpty=%s", isEmpty);
PushStack(stack,1);
PushStack(stack,2);
PushStack(stack,3);
PopStack(stack);
ElementType e = GetTop(stack);
//printf_s("getTop=%d", e);
}

数据结构-“栈”的基本操作相关推荐

  1. 数据结构 -- 栈的基本操作(入栈、出栈、取栈顶元素)

    目录 栈的基本操作(顺序栈) 栈的基本操作(链栈) 栈的基本操作(顺序栈) 初始化栈: #define MAXSIZE 5 typedef struct {int *top;int *base;int ...

  2. 数据结构——栈的基本操作

    #include<stdio.h> #include<stdlib.h>/*堆栈的基本操作*/ struct Stack{int data;struct Stack * nex ...

  3. 数据结构栈的基本操作(C语言)

    要求: 1.采用顺序存储实现栈的初始化.入栈.出栈操作. 2.采用链式存储实现栈的初始化.入栈.出栈操作. 3.写一个程序,将输入的十进制数据M 转换为八进制数据M8,将其调试通过. 在此基础上修改程 ...

  4. 第三期 C/C++数据结构 栈的基本操作

    纯属自学,代码也是自己写的,如果有不同看法可以在评论区滴滴 最后有代码运行截图,欢迎学习~~~ #include <iostream> using namespace std; #defi ...

  5. 数据结构[栈与队列]的基本操作

    首先大致说一下栈这个数据结构,他是一个先进后出的结构,就好比家中摆盘子一样,洗好的盘子放到最上面,当要用的时候从最上面拿走(当然只是一般情况,你要是每次都从下面抽走盘子我也没办法). 这样的话我们可以 ...

  6. 数据结构源码笔记(C语言):栈的基本操作

    #include <stdio.h> #define MaxSize 100typedef char ElemType;typedef struct {char stack[MaxSize ...

  7. sdut 3335 数据结构实验之栈与队列八:栈的基本操作

    数据结构实验之栈与队列八:栈的基本操作 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descri ...

  8. 重学数据结构004——栈的基本操作及实现(数组实现)

    上文提到过栈以及栈的基本操作.上文中是基于链表做的实现.但是这种方法会出现大量的malloc()和free()操作,这种开销是非常昂贵的. 另外一种实现方式是基于数组的实现.这种实现方式需要预先制定一 ...

  9. 数据结构动态顺序字符串基本操作实验_技术连载:数据结构 - 栈

    栈 只有一个口,可以进数据也可以出数据,一种典型的先进后出.后进先出的数据结构: 栈 栈的基本操作 入栈 入栈操作需要考虑当前栈是否以及满了,如果满了是选择扩容还是返回入栈失败: 入栈成功则需要更新栈 ...

最新文章

  1. 在domain中验证cron表达式
  2. CSS之创建等高列布局之二
  3. 用面包分析数学定律,数学老师成网红
  4. scikit-learn中随机森林使用详解
  5. 不使用输入框如何实现下拉_使用INFINITE AJAX SCROLL实现下拉加载效果
  6. 我用了20年ERP系统,但是用它做报表,我却后悔了
  7. 腾讯AI加速器三期全球招募开启,打造AI+产业生力军
  8. current_session_context_class
  9. leetcode 148. Sort List ----- java
  10. ipad iphone开发_如何在iPhone或iPad上强制退出应用程序
  11. Linux中的VMware共享文件夹
  12. html发布机制tacat,序列分析一般程序中的一个实例
  13. 老一辈学计算机的在那,真实的南京大学计算机系
  14. 16 - 12 - 20 KMP算法 模式匹配 终极奥义!
  15. excel多个表格数据汇总之汇总指定名称工作表
  16. 环境篇-Windows下安装OpenSSL
  17. Opencv中,imag=cv2.cvtColor(imag,cv2.COLOR_BGR2GRAY) 报错:error:!_src.empty() in function ‘cv::cvtColor‘
  18. uCLinux简介--
  19. 综述 | 图像计算传感器
  20. PAOGD个人作业3——OpenGL,实现模型自身的旋转,平移,缩放

热门文章

  1. 64 源码_【ClickHouse内核】源码阅读策略
  2. 健康饮食五谷杂粮系列PPT模板
  3. SQLAlchemy in 查询空列表问题分析
  4. Servlet第五篇【介绍会话技术、Cookie的API、详解、应用】
  5. python操作memcahed
  6. file_get_contents()采集不到原因
  7. iomem—I/O映射方式的I/O端口和内存映射方式的I/O端口
  8. Microsoft photosynth(图片三维展示)
  9. python调用公共方法_common: 这是一个Python的公共工具类,集成了各种主要的python常用方法...
  10. python字符串输入_python如何输入字符串