#include

#include

//定义函数结果状态码

#define OK 1

#define ERROR 0

#define TRUE 1

#define FALSE 0

//宏定义栈的空间大小

#define STACKSIZE 20

//定义数据类型

typedef int ElemType ;

//定义程序返回状态类型

typedef int State;

//顺序栈存储结构

struct _SqStack

{

ElemType data[STACKSIZE];//存放数据元素的数组

int top;//指向栈顶位置

};

typedef struct _SqStack *SqStack;

/*************************************************

Function: InitStack

Description: 初始化,构造空栈

Input: 顺序栈指针 SqStack stack

Output:

Return: 成功返回OK

Others: 空栈top为-1

*************************************************/

State InitStack(SqStack stack)

{

stack->top = -1;

return OK;

}

/*************************************************

Function: IsStackEmpty

Description: 判断栈是否为空

Input: 顺序栈指针 SqStack stack

Output:

Return: 为空返回TRUE,否则返回FALSE

Others:

*************************************************/

State IsStackEmpty(SqStack stack)

{

if(stack->top == -1)

return TRUE;

else

return FALSE;

}

/*************************************************

Function: IsStackFull

Description: 判断栈是否满

Input: 顺序栈指针 SqStack stack

Output:

Return: 为满返回TRUE,否则返回FALSE

Others:

*************************************************/

State IsStackFull(SqStack stack)

{

if(stack->top == STACKSIZE-1)

return TRUE;

else

return FALSE;

}

/*************************************************

Function: Push

Description: 入栈

Input: 顺序栈指针 SqStack stack

数据元素 ElemType e

Output:

Return: 成功返回OK,失败返回ERROR

Others:

*************************************************/

State Push(SqStack stack, ElemType e)

{

//判断栈是否满

if(stack->top == STACKSIZE-1)

{

printf("The stack is full!");

return ERROR;

}

//栈顶指针加1

stack->top++;

stack->data[stack->top] = e;

return OK;

}

/*************************************************

Function: Pop

Description: 出栈

Input: 顺序栈指针 SqStack stack

Output:

Return: 成功返回数据元素,程序退出

Others:

*************************************************/

ElemType Pop(SqStack stack)

{

//判断是否为空栈

if(stack->top == -1)

{

printf("The stack is empty!");

exit(EXIT_FAILURE);

}

//保存当前栈顶元素

ElemType e = stack->data[stack->top];

//栈顶指针减1

stack->top--;

return e;

}

/*************************************************

Function: GetTop

Description: 取栈顶元素

Input: 顺序栈指针 SqStack stack

Output:

Return: 成功返回数据元素,程序退出

Others:

*************************************************/

ElemType GetTop(SqStack stack)

{

//判断是否为空栈

if(stack->top == -1)

{

printf("The stack is empty!");

exit(EXIT_FAILURE);

}

return stack->data[stack->top];

}

/*************************************************

Function: ClearStack

Description: 把栈置空

Input: 顺序栈指针 SqStack stack

Output:

Return: 成功返回OK

Others:

*************************************************/

State ClearStack(SqStack stack)

{

stack->top = -1;

return OK;

}

/*************************************************

Function: GetLength

Description: 取得栈的长度

Input: 顺序栈指针 SqStack *stack

Output:

Return: 返回栈的长度

Others:

*************************************************/

int GetLength(SqStack stack)

{

return stack->top+1;

}

c语言求栈长度程序,数据结构C语言实现之顺序栈相关推荐

  1. c语言动态双端栈的原理,数据结构(C语言版)例题(第三章:栈和队列)

    数据结构(C语言版)例题(第三章:栈和队列) 数据结构(C语言版)例题(第三章:栈和队列) (2008-05-09 12:33:13) 转载▼ ◆3.15③ 假设以顺序存储结构实现一个双向栈,即在一维 ...

  2. 数据结构c语言版第16页,数据结构c语言版

    数据结构c语言版[编辑] 概述 <数据结构C语言版>本书的前半部分从抽象数据类型的角度讨论各种基本类型的数据结构及其应用;后半部分主要讨论查找和排序的各种实现方法及综合分析比较 出版信息 ...

  3. 逆置单链表c语言程序,(数据结构C语言版)顺序表和单链表的逆置

    <(数据结构C语言版)顺序表和单链表的逆置>由会员分享,可在线阅读,更多相关<(数据结构C语言版)顺序表和单链表的逆置(7页珍藏版)>请在人人文库网上搜索. 1.实验1-1顺序 ...

  4. C语言——求字符串长度

    Description 求一个长度不大于100的字符串的长度,要求不使用strlen方法,通过自定义的函数实现字符串长度的计算.  函数定义为:int GetStrLen(char *pStr) In ...

  5. 为什么C语言是非形式化的,《数据结构C语言版》——绪论

    <数据结构C语言版>--绪论<笔记> 一.基本概念和术语 1.数据,数据元素, 数据项,数据对象 数据:是客观事物的符号表示,是所有能够输入到计算机中并被计算机程序处理的符号的 ...

  6. c语言课程设计计算器程序分析,c语言课程设计简单计算器程序..docx

    课程设计名称:C语言课程设计 课程设计题目: 简单计算器程序 TOC \o "1-5" \h \z \o "Current Document" 第1章需求分析1 ...

  7. c语言最简单的程序编写,C语言简单程序编写.doc

    C语言简单程序编写 项目一 C语言简单程序编写 1.1学习目标 本项目达到的目标为: 掌握程序设计的基本思路 掌握C语言的基本结构 了解流程图的符号含义 掌握C语言的关键字 会设计和编写简单的C应用程 ...

  8. c语言线性表库函数大全,数据结构(C语言版)-线性表习题详解

    <数据结构(C语言版)-线性表习题详解>由会员分享,可在线阅读,更多相关<数据结构(C语言版)-线性表习题详解(23页珍藏版)>请在人人文库网上搜索. 1.数 据 结 构 ,线 ...

  9. 数据结构c语言版实验报告2,数据结构(C语言版) 实验报告 (2)

    <数据结构(C语言版) 实验报告 (2)>由会员分享,可在线阅读,更多相关<数据结构(C语言版) 实验报告 (2)(15页珍藏版)>请在人人文库网上搜索. 1.数据结构(C语言 ...

  10. 数据结构C语言 胡学钢 PDF,数据结构(C语言版) 胡学钢.ppt

    数据结构(C语言版) 胡学钢 2.3 链表--单链表的应用(头结点) 设计算法,判断带头结点单链表L是否递增?若递增,则返回true,否则返回false. 分析: (1)链表空,返回true: (2) ...

最新文章

  1. linux怎么创建用户教程,在Linux中如何手动创建一个用户
  2. 【java排序】 归并排序算法、堆排序算法
  3. 逻辑回归 python_深入研究Python的逻辑回归
  4. 使用bootstrap-table插件
  5. Linux RAID磁盘阵列
  6. python的spider程序下载_PHPspider爬虫10分钟快速教程(内附python教程分享)
  7. python综合实验报告_Python程序设计实验报告五:综合运用三种基本结构进行程序设计(综合性实验)...
  8. Android截图指令
  9. Few-Shot Video Object Detection
  10. 颜色值RGB转换为HEX(十六进制)
  11. 计算机CPU的时钟频率主要,cpu时钟频率计算公式_CPU频率计算方法详解
  12. python编写coc部落冲突游戏辅助(1)
  13. 标题:关于high-speed Charting Control配置过程中一些问题(ChartCtrl新手向)vs2019+win10-2020.12.11
  14. 全球及中国犬淋巴瘤治疗行业研究及十四五规划分析报告
  15. 高等数学——旋转体的体积
  16. 闲鱼如何0到1搭建一套发布引导链路
  17. VR系列——Oculus Rift 开发者指南:二、初始化和传感器枚举
  18. 计算机选取多个目标按什么键,连续选择多个按什么键
  19. 北邮计算机学院英语面试,北京邮电大学2021计算机与软件考研数据分析
  20. MCE | LYTAC 与靶向蛋白降解技术

热门文章

  1. 遭遇 kapjazy.dll,yhpri.dll,WinSys64.Sys,nwiztlbu.exe,myplayer.com 等1
  2. Tracepro中up vector和normal vector的定义1
  3. Crackme 23
  4. ISO27001认证步骤及证书年审
  5. 最新影视小程序源码去授权版免费下载
  6. 宝德Pr2500y服务器装系统,GP2500-LG41-24V
  7. Windows Server 2003 (NT 5.2.3790.0) 操作系统源代码编译构建指南版本 10b,上次更新 2021/10/21
  8. html flash 背景,使FLASH背景变透明的方法介绍
  9. 信捷无线触摸屏与plc实现多从站MODBUS通讯
  10. 细节至上——Splus微博设计之界面篇(转)