• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++中栈结构建立与操作详细解析

C++中栈结构建立与操作详细解析

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++中栈的使用,c++链式栈,c++用栈实现计算器,c++栈,c++栈的使用等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

什么是栈结构

栈结构是从数据的运算来分类的,也就是说栈结构具有特殊的运算规则,即:后进先出。

我们可以把栈理解成一个大仓库,放在仓库门口(栈顶)的货物会优先被取出,然后再取出里面的货物。

而从数据的逻辑结构来看,栈结构起始就是一种线性结构。

如果从数据的存储结构来进一步划分,栈结构包括两类:
顺序栈结构:

即使用一组地址连续的内存单元依次保存栈中的数据。在程序中,可以定义一个指定大小的结构数组来作为栈,序号为0的元素就是栈低,再定义一个变量top保存栈顶的序号即可。
链式栈结构:

即使用链表的的形式保存栈中各元素的值。链表首部(head指针所指向元素)为栈顶,链表尾部(指向地址为NULL)为栈底。

在栈结构中只能在一端进行操作,该操作端称为栈顶,另一端称为栈底。也就是说,保存和取出的数据都只能从栈结构的一端进行。从数据的运算角度来分析,栈结构是按照“后进先出”的原则处理结点数据的。

在栈结构中,只有栈顶元素是可以访问的,栈结构的数据运算也是非常简单。一般栈结构的基本操作只有两个:

入栈(Push):将数据保存到栈顶的操作。进行入栈操作前,先修改栈顶指针,使其向上移一个元素位置,然后将数据保存到栈顶指针所指的位置。

出栈(Pop):将栈顶数据弹出的操作。通过修改栈顶指针,使其指向栈中的下一个元素。

接下来,我们使用C++语言建立顺序栈,并完成顺序栈结构的基本运算
准备数据

准备在栈操作中需要用到的变量及数据结构等。

</div>
定义栈结构的长度MAXLEN,栈结构的数据元素类型DATA,以及栈结构的数据结构StackType。在数据结构StackType中,data为数据元素,top为栈顶的序号。当top=0时,表示栈为空,当top=MAXLEN时表示栈满。

数组元素都是充下标0开始的,这里为了讲述和理解方便,我们从下标1开始记录数据结点,下标0的位置不用。
初始化栈结构

在使用栈结构之前,首先需要创建一个空的顺序栈,也就是初始化顺序栈。顺序栈的初始化操作如下:

(1)按照符号常量MAXLEN指定大小申请一片内存空间,用来保存栈中的数据

(2)设置栈顶指针的值为0,表示一个空栈。

示例代码如下:

判断空栈

判断栈结构是否为空,如果是空栈,则表示该栈结构中没有数据,此时可以进行入栈操作,但是不可以进行出栈操作。

示例代码如下:

判断满栈

判断栈结构是否为满。如果是满栈,则表示该栈结构中没有多余的空间来保存额外数据。此时不可以进行入栈操作,但是可以进行进栈操作。

示例代码如下:

清空栈

清空栈就是栈中所有的数据被清除。 示例代码如下:

释放空间

释放空间是释放栈结构所占用的内存单元,使用delete释放用new运算符申请的内存空间。

示例代码如下:

入栈

入栈(Push)是栈结构的基本操作,主要操作是将数据元素保存到栈结构。入栈操作的具体步骤如下:

(1)首先判断栈顶top,如果top大于等于MAXLEN,则表示溢出,进行出错处理。否则执行以下操作。

(2)设置top=top+1(栈顶指针加1,指向入栈地址)

(3)将入栈呀U尿素保存到top指向的位置。

示例代码如下:

出栈

出栈(Pop)是占据诶狗的基本操作,主要操作与入栈相反,它是从栈顶弹出一个数据元素,出栈操作的具体步骤如下:

(1)首先判断栈顶top,如果top等于0,则表示为恐慌在哪,进行出错处理。否则执行下面的操作。

(2)将栈顶指针top所指向的位置的元素返回(实际是返回的指针)

(3)将top的减1,指向栈的下一个元素,原来栈顶的元素被弹出。

读取点结构

读取点结构也就是读取栈结构中结点的数据。由于栈结构只能在一端进行操作,因此这里的读操作其实就是读站点的数据。

需要注意的是,读节点数据的操作和出栈操作不同。读结点操作仅仅是显示栈顶结点数据的内容,而出栈操作则将栈顶数据弹出。

示例代码如下:
  cout<<"栈已空"<<e

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++基于栈实现铁轨问题
  • C++中用栈来判断括号字符串匹配问题的实现方法
  • C++中栈结构建立与操作详细解析
  • 用C++实现一个链式栈的实例代码

相关文章

  • 2017-05-28C语言职工管理系统设计
  • 2017-05-28了解C++编程中指定的异常和未经处理的异常
  • 2017-05-28详解C++编程中的重载流插入运算符和流提取运算符
  • 2017-05-28strcat函数与strncat函数的深入分析
  • 2017-05-28C/C++判断传入的UTC时间是否当天的实现方法
  • 2017-05-28VC WinExec打开指定程序或者文件的方法
  • 2017-05-28socket多人聊天程序C语言版(二)
  • 2017-05-28c++中#include &lt;&gt;与#include""的区别详细解析
  • 2017-05-28深入理解C/C++中的写时拷贝
  • 2017-05-28c语言中使用BF-KMP算法实例

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++语言实现hash表详解及实例代码
    • c语言:金币阵列的问题
    • C语言中初始、增加和删除进程信号的操作方法简介
    • 基于堆的基本操作的介绍
    • C语言位图算法详解
    • C++产生随机数的实现代码
    • 平衡二叉树的实现实例
    • 详解C++编程中的主表达式与后缀表达式编写基础
    • 快速模式匹配算法(KMP)的深入理解
    • C++中的常对象与常对象成员详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有