栈的顺序结构实现

typedef int Position;
struct SNode {ElementType *Data; /* 存储元素的数组 */Position Top;      /* 栈顶指针 */int MaxSize;       /* 堆栈最大容量 */
};
typedef struct SNode *Stack;Stack CreateStack( int MaxSize )
{Stack S = (Stack)malloc(sizeof(struct SNode));S->Data = (ElementType *)malloc(MaxSize * sizeof(ElementType));S->Top = -1;S->MaxSize = MaxSize;return S;
}bool IsFull( Stack S )
{return (S->Top == S->MaxSize-1);
}bool Push( Stack S, ElementType X )
{if ( IsFull(S) ) {printf("堆栈满");return false;}else {S->Data[++(S->Top)] = X;return true;}
}bool IsEmpty( Stack S )
{return (S->Top == -1);
}ElementType Pop( Stack S )
{if ( IsEmpty(S) ) {printf("堆栈空");return ERROR; /* ERROR是ElementType的特殊值,标志错误 */}else return ( S->Data[(S->Top)--] );
}

栈的链式结构实现

typedef struct SNode *PtrToSNode;
struct SNode {ElementType Data;PtrToSNode Next;
};
typedef PtrToSNode Stack;Stack CreateStack( )
{ /* 构建一个堆栈的头结点,返回该结点指针 */Stack S;S = (Stack)malloc(sizeof(struct SNode));S->Next = NULL;return S;
}bool IsEmpty ( Stack S )
{ /* 判断堆栈S是否为空,若是返回true;否则返回false */return ( S->Next == NULL );
}bool Push( Stack S, ElementType X )
{ /* 将元素X压入堆栈S */PtrToSNode TmpCell;TmpCell = (PtrToSNode)malloc(sizeof(struct SNode));TmpCell->Data = X;TmpCell->Next = S->Next;S->Next = TmpCell;return true;
}ElementType Pop( Stack S )
{ /* 删除并返回堆栈S的栈顶元素 */PtrToSNode FirstCell;ElementType TopElem;if( IsEmpty(S) ) {printf("堆栈空"); return ERROR;}else {FirstCell = S->Next; TopElem = FirstCell->Data;S->Next = FirstCell->Next;free(FirstCell);return TopElem;}
}

栈之顺序结构和链式结构相关推荐

  1. java链式结构_java语言实现队列顺序结构与链式结构

    本文主要向大家介绍了java语言实现队列顺序结构与链式结构,通过具体的内容向大家展示,希望对大家学习java语言有所帮助. 队列的顺序存储结构实现 public class Queue{ privat ...

  2. 数据结构(顺序结构、链式结构、索引结构、散列结构)

    文章目录 1.概述 2.数据间逻辑关系 3.数据的存储结构(或物理结构) 3.1顺序结构 3.2链式结构 3.3索引结构 3.4散列结构 4.运算结构 1.概述 数据结构,就是一种程序设计优化的方法论 ...

  3. 【C】二叉树--顺序结构(详解堆的实现,topK排序、堆排)、和链式结构(链式结构的遍历、链式结构常见递归操作以及练习题)

    本章我们将引入树的概念并详细介绍二叉树.我们会在介绍顺序二叉树基础上,进一步介绍堆以及堆的实现,并以此为依据详解topK排序.堆排等问题:然后我们会介绍链式二叉树的实现以及各种操作.最后,我们也会给出 ...

  4. 数据的逻辑结构(线性结构、非线性结构;集合结构、树状结构、网状结构),数据的存储结构(顺序结构、链式结构、索引结构、散列结构)

    数据的逻辑结构 数据的逻辑结构指数据元素之间的逻辑关系(和实现无关). 分类1:线性结构和非线性结构 线性结构:有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继. ...

  5. 数据的逻辑结构(线性结构、非线性结构;集合结构、线性结构、树状结构、网状结构),数据的存储结构(顺序结构、链式结构、索引结构、散列结构)

    数据的逻辑结构 数据的逻辑结构指数据元素之间的逻辑关系(和实现无关). 分类1:线性结构和非线性结构 线性结构:有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继. ...

  6. 表之顺序结构和链式结构

    #include "stdafx.h" #include<stdlib.h>#define ElementType int #define MAXSIZE 10type ...

  7. C/C++实现栈的链式结构(链栈)

    今天我们学习的是链栈,也就是说栈的链式结构,我们运用顺序链的方式来实现.首先呢,链栈是不存在存储空间满的情况的,所以可以说它是个无底洞,然而我们之前学的顺序栈是有额定空间的. 栈顶指针总是指向栈顶前面 ...

  8. 顺序、链式结构的个人书籍管理系统(C++)

    仅供课外学习使用,任何个人与机构不得利用此文章进行任何形式的作弊. 因上一作浏览量激增,不胜惶恐.故上传新版,恳请各路大神赐教. 个人书籍管理系统的编写.制作与实现(C语言) 项目要求 设计一个图书管 ...

  9. 数据结构之顺序存储结构和链式存储结构分析 , 图文并茂 , 又涨姿势了

    在计算机中,数据元素并不是孤立.杂乱无序的,而是具有内在联系的数据集合.数据元素之间存在一种或多种特定关系,也就是数据的组织形式.为编写出一个 好"的程序,必须分析待处理对象的特性及各处理对 ...

最新文章

  1. NLP Chinese Corpus:大规模中文自然语言处理语料
  2. 【渝粤题库】陕西师范大学202081 管理学 作业 (专升本、高起本、高起专)
  3. angular 权限 php,PHP,Angular,HTACCESS-仅允许来自源域的请求
  4. 清北学堂培训2019.4.4
  5. 突变检测软件 测试数据库,测序数据比对和变异检测
  6. 知乎:为什么魂斗罗只有128KB却可以实现那么长的剧情?
  7. 8.5 输入输出重定向
  8. Service通信详解
  9. 让 list-style-image 图片垂直居中
  10. 基于matlab的2ASK调制解调仿真
  11. 小米平板4刷机win10或linux,小米平板4 win版_小米平板4可以刷win
  12. 计算机算法基础总结(借鉴、整理)
  13. 模拟电子技术 项目课 多种波形发生器(方波、三角波、正弦波)
  14. python运维自动化脚本案例-python自动化运维脚本范例
  15. cropper.js 实现裁剪图片并上传(PC端)
  16. 高并发下数据库分库分表面试题整理
  17. 参饵光纤光源matlab,模块化掺铒光纤宽带光源驱动电路设计
  18. jzoj6384. 【NOIP2019模拟2019.10.23】珂学家
  19. Qt QByteArray字节数组
  20. 十年一剑,阿里推荐与搜索引擎平台AI·OS首次公开!

热门文章

  1. 2-29 while
  2. ZooKeeper官方文档资源
  3. C++ Primer 5th笔记(chap 19 特殊工具与技术)类成员指针
  4. C++ Primer 5th笔记(chap 14 重载运算和类型转换)递增和递减运算符
  5. C++ Primer 5th笔记(chap 14 重载运算和类型转换)算术和关系运算符
  6. buu [BJDCTF 2nd]签到-y1ng
  7. 【攻防世界009】流浪者
  8. (65)如何根据句柄从二级、三级结构句柄表中找到内核对象
  9. (18)修改 PTE 实现挂物理页读写空指针
  10. 【Win32汇编】复制字符串