**

顺序栈可以用一个一维数组和一个记录栈顶位置的整形变量来实现,数组用于顺序存储栈中所有的数据元素,栈顶指针用于存储栈顶元素的位置。

**
头文件(Sqstack.h):

#ifndef __SQSTACK_H__
#define __SQSTACK_H__#include "error.h"#define TRUE  1
#define FALSE 0#define SIZE  10
typedef int StackData;
typedef struct _stack
{StackData data[SIZE];       // 栈数组int top;
}Stack;// 置空栈
int InitStack  (Stack* s);// 判栈是否空栈
int StackEmpty (Stack* s);// 判栈是否栈满
int StackFull  (Stack* s);// 进栈
int Push (Stack* s, StackData x);// 出栈
int Pop  (Stack* s, StackData *x);// 取栈顶
int GetTop (Stack* s, StackData *x);#endif

源文件(Sqstack.c):

#include "SqStack.h"// 置空栈
int InitStack (Stack* s)
{if (NULL == s){errno = ERROR;return FALSE;}s->top = -1;
}// 空返回真,否则返回假
int StackEmpty (Stack* s)
{if (NULL == s){errno = ERROR;return FALSE;}return s->top == -1;
}// 满则返回真,否则返回假
int StackFull (Stack* s)
{if (NULL == s){errno = ERROR;return FALSE;}return s->top == (SIZE - 1);
}// 进栈
int Push (Stack* s, StackData x)
{if (NULL == s){errno = ERROR;return FALSE;}// 判断是否栈满if (StackFull(s)){errno = FULL_STACK;return FALSE;}// 先进行x的存储s->data[++s->top] = x;      return TRUE;
}// 出栈
int Pop (Stack* s, StackData *x)
{if (NULL == s){errno = ERROR;return FALSE;}// 判断是否空栈if (StackEmpty(s)){errno = EMPTY_STACK;return FALSE;}*x = s->data[s->top--];return TRUE;
}// 取栈顶
int GetTop (Stack* s, StackData *x)
{if (NULL == s){errno = ERROR;return FALSE;}//判断是否空栈if (StackEmpty(s)){errno = EMPTY_STACK;return FALSE;}*x = s->data[s->top];return TRUE;
}

数据结构之顺序栈的一些基本操作相关推荐

  1. 数据结构 创建顺序栈

    3.27数据结构--创建顺序栈 结构体定义 初始化栈 入栈 出栈 销毁栈 运行结果截图: 代码: /*3.27 顺序栈*/#define _CRT_SECURE_NO_WARNINGS #define ...

  2. 数据结构遍历顺序栈_数据结构:顺序栈的实现

    数据结构:顺序栈的实现 1.快速开始 栈是一种遵循元素后进(Push)先出(Pop)规则的线性表,即最后加入的元素最先出来,它的实现可以用数组或者链表. 它的特点如下: 后入先出,先入后出. 除了头尾 ...

  3. 【C++】【数据结构】顺序栈的基本操作(初始化、入栈、出栈、取栈顶元素、遍历输出栈)的算法实现附全代码

    C++实现顺序栈的算法+步骤(附全代码): 使用c++完成数据结构顺序栈的基本操作,包括(初始化.入栈.出栈.取栈顶元素.遍历输出栈等),可直接编译运行. 顺序栈的定义如下: #define MAXS ...

  4. 数据结构:顺序栈基本操作(入栈和出栈)C语言详解(转载)by解学武

    本文为解学武教程的免费章节 什么是顺序栈 顺序栈,即用顺序表实现栈存储结构.通过前面的学习我们知道,使用栈存储结构操作数据元素必须遵守 "先进后出" 的原则,本节就 "如 ...

  5. 数据结构之【栈】的基本操作C语言实现

    引题:        很多人都把[栈]描述成[弹匣],但我总感觉有点不恰当,因为弹匣从上端[装弹]之后,子弹总是在匣的上层:而元素[进栈]之后,总在栈的下面.        我觉得还是描述成[从下往上 ...

  6. 数据结构遍历顺序栈_链栈的初始化与遍历

    初始化 我们在定义完一个数据结构的结构体之后,需要初始化才能使用.比如顺序栈的初始化,也就是构造一个空栈就行了.那么链栈如何初始化呢? 链栈初始化的目标也是要构造一个空栈.根据结构体定义,空栈是什么一 ...

  7. 数据结构之 顺序栈、共享栈、链栈

    顺序栈.共享栈.链栈 一.思维导图: 二.栈的定义: 三.栈的特点: 四.栈的基本操作: 五.常考题型: 六.顺序栈: 1.思维导图: 2.顺序栈基本操作的实现: 1.定义栈: 2. 初始化栈:Ini ...

  8. PHP/Golang实现—数据结构之顺序栈

    客官,留下你的赞:成为我的粉丝,一起上车哦!评论区欢迎你的留言 重温数据结构.相关代码集放在GitHub上,欢迎Star.Fork和一起加入.目前只有PHP版本:后续会增加Golang版本,后续会不断 ...

  9. 数据结构《顺序栈》知识点详解+C语言完整代码-超详细

    顺序栈 栈 1. 定义 2. 逻辑结构 3. 存储结构 4. 运算规则 5. 实现方式 C语言代码实现 1. 顺序栈的表示 2. 结构体 3.初始化 4.入栈 5.出栈 6. 取栈顶元素 7.求长 8 ...

最新文章

  1. Ajax Toolkit日历控件CalendarExtender求教!
  2. 怎样用springboot开发cs_SpringBoot分布式任务中间件开发 附视频讲解 (手把手教你开发和使用中间件)...
  3. 【无标题】科大星云诗社动态20201206
  4. Kapacitor安装及使用
  5. VC++ CFileDialog文件选择对话框的构造和文件操作
  6. 公司安排员工扫地,引发员工不满,程序员:保洁阿姨都请不起?
  7. QQ企业邮箱+Spring+Javamail+ActiveMQ(发送企业邮件)
  8. 栈和队列的基础算法学习(EPI)
  9. 外部方法调用内部_实战经验:通过类成员函数指针实现类方法调用
  10. 星环大数据使用经验总结
  11. XAMPP使用教程方法(摘录)
  12. 上海联影医疗公司软件开发工程师面试经历
  13. 人活着就是为了改变世界,不要把时间浪费在重复其他人的生活上。————乔布斯
  14. PCFG CKY句法分析
  15. 基于查找表的正弦波生成的研究
  16. Oracle Sqlplus显示不足问题
  17. ElasticSearch创建索引:[hotel/6g9tufKRuWDdWfgE_F30Q] ElasticsearchStatusException[Elasticsearch exception
  18. [易飞]信息传递-多表(含外表)关联取值
  19. 24.大数据学习之旅——spark手把手带你入门
  20. 0元0基础搭建个人网站简易实操

热门文章

  1. 工业炉温度计算机控制系统,热处理工业炉计算机控制系统组态王+PLC)
  2. plc控制可调节阀流程图_PLC控制的水箱液位控制系统毕业论文
  3. 百度校招历年经典面试题汇总:Java开发岗
  4. leetcode252. 会议室
  5. 推荐算法--利用用户标签数据(04)
  6. 东芝移动硬盘驱动_传输数据不用等,高速移动硬盘数据线畅享快传体验
  7. python版本切换_怎么切换python版本
  8. C++primer 第 4 章 表达式 4.7条件运算符 4.8位运算符 4.9 sizeof运算符 4.10逗号运算符 4.11类型转换 4 . 1 2 运算符优先级表
  9. 2000年考研英语阅读理解文章四
  10. 什么是好的API设计? 1