数据结构-“栈”的基本操作
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)
栈的更多概念就不赘述了,详情可以参考百度百科。
接下来就来到了我们的动手环节,栈的基本操作包括入栈、出栈、初始化等.
栈顶指针: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);
}
数据结构-“栈”的基本操作相关推荐
- 数据结构 -- 栈的基本操作(入栈、出栈、取栈顶元素)
目录 栈的基本操作(顺序栈) 栈的基本操作(链栈) 栈的基本操作(顺序栈) 初始化栈: #define MAXSIZE 5 typedef struct {int *top;int *base;int ...
- 数据结构——栈的基本操作
#include<stdio.h> #include<stdlib.h>/*堆栈的基本操作*/ struct Stack{int data;struct Stack * nex ...
- 数据结构栈的基本操作(C语言)
要求: 1.采用顺序存储实现栈的初始化.入栈.出栈操作. 2.采用链式存储实现栈的初始化.入栈.出栈操作. 3.写一个程序,将输入的十进制数据M 转换为八进制数据M8,将其调试通过. 在此基础上修改程 ...
- 第三期 C/C++数据结构 栈的基本操作
纯属自学,代码也是自己写的,如果有不同看法可以在评论区滴滴 最后有代码运行截图,欢迎学习~~~ #include <iostream> using namespace std; #defi ...
- 数据结构[栈与队列]的基本操作
首先大致说一下栈这个数据结构,他是一个先进后出的结构,就好比家中摆盘子一样,洗好的盘子放到最上面,当要用的时候从最上面拿走(当然只是一般情况,你要是每次都从下面抽走盘子我也没办法). 这样的话我们可以 ...
- 数据结构源码笔记(C语言):栈的基本操作
#include <stdio.h> #define MaxSize 100typedef char ElemType;typedef struct {char stack[MaxSize ...
- sdut 3335 数据结构实验之栈与队列八:栈的基本操作
数据结构实验之栈与队列八:栈的基本操作 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descri ...
- 重学数据结构004——栈的基本操作及实现(数组实现)
上文提到过栈以及栈的基本操作.上文中是基于链表做的实现.但是这种方法会出现大量的malloc()和free()操作,这种开销是非常昂贵的. 另外一种实现方式是基于数组的实现.这种实现方式需要预先制定一 ...
- 数据结构动态顺序字符串基本操作实验_技术连载:数据结构 - 栈
栈 只有一个口,可以进数据也可以出数据,一种典型的先进后出.后进先出的数据结构: 栈 栈的基本操作 入栈 入栈操作需要考虑当前栈是否以及满了,如果满了是选择扩容还是返回入栈失败: 入栈成功则需要更新栈 ...
最新文章
- 在domain中验证cron表达式
- CSS之创建等高列布局之二
- 用面包分析数学定律,数学老师成网红
- scikit-learn中随机森林使用详解
- 不使用输入框如何实现下拉_使用INFINITE AJAX SCROLL实现下拉加载效果
- 我用了20年ERP系统,但是用它做报表,我却后悔了
- 腾讯AI加速器三期全球招募开启,打造AI+产业生力军
- current_session_context_class
- leetcode 148. Sort List ----- java
- ipad iphone开发_如何在iPhone或iPad上强制退出应用程序
- Linux中的VMware共享文件夹
- html发布机制tacat,序列分析一般程序中的一个实例
- 老一辈学计算机的在那,真实的南京大学计算机系
- 16 - 12 - 20 KMP算法 模式匹配 终极奥义!
- excel多个表格数据汇总之汇总指定名称工作表
- 环境篇-Windows下安装OpenSSL
- Opencv中,imag=cv2.cvtColor(imag,cv2.COLOR_BGR2GRAY) 报错:error:!_src.empty() in function ‘cv::cvtColor‘
- uCLinux简介--
- 综述 | 图像计算传感器
- PAOGD个人作业3——OpenGL,实现模型自身的旋转,平移,缩放
热门文章
- 64 源码_【ClickHouse内核】源码阅读策略
- 健康饮食五谷杂粮系列PPT模板
- SQLAlchemy in 查询空列表问题分析
- Servlet第五篇【介绍会话技术、Cookie的API、详解、应用】
- python操作memcahed
- file_get_contents()采集不到原因
- iomem—I/O映射方式的I/O端口和内存映射方式的I/O端口
- Microsoft photosynth(图片三维展示)
- python调用公共方法_common: 这是一个Python的公共工具类,集成了各种主要的python常用方法...
- python字符串输入_python如何输入字符串