简介

链栈是采用连式存储结构的一种数据结构;由链表来表示

下面介绍其存储结构

1、存储结构

#define elemType int
//typedef int elemType;
typedef struct{elemType data;//节点数据域struct stackNode *next;//节点指针域
}stackNode,*linkStack;//linkStack是指向stackNode的指针数据类型

2、链栈的初始化

构造空栈,将栈顶指针置空(无需设置头结点)

#define status int
//typedef int status;
status init_Link_stack(linkStack &S){//构造空栈,栈顶指针置空S=NULL;return 1;
}

3、入栈

1.为即将入栈的元素分配空间,并用指针p指向它

2.将新节点的指针域置空

3.将新节点置栈顶

4.将栈顶指针修改为p

#define selemType int
//typedef int selemType;
status push(linkStack &S,selemType e){linkStack p;p=new stackNode;p->data=e;p->next=S;S=p;return 1;
}

4、出栈

1.判断栈是否为空

2.将栈顶元素赋值为e

3.暂时保存栈顶元素的空间

4.修改栈顶指针,指向新的栈顶(即出栈前元素下面的那个元素)

5.释放原来栈顶指针的空间

status pop(linkStack &S,selemType &e){linkStack p;if(S==NULL)return 0;e=S->data;p=S;S=S->next;delete p;return 1;
}

5、取栈顶

1.判断栈是否为空

2.取栈顶元素

selemType get_Top(linkStack S){if(S!=NULL)return S->data;
}

链栈的表示和实现(C++)相关推荐

  1. 数据结构与算法(3-1)栈(顺序栈、两栈共享空间、链栈、栈的计算器)

    目录 一.顺序栈 存储结构 总代码 二.两栈共享空间 存储结构: 总代码: 三.链栈 存储结构: 总代码: 一.顺序栈 存储结构: 栈特点:先进后出,后进先出.(特殊的线性表) 入栈时在栈顶添加元素, ...

  2. 十进制转换成十六进制c语言 链栈,C语言 链栈 实现十进制转换二进制,八进制,十六进制...

    C语言 链栈 实现十进制转换二进制,八进制,十六进制 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 最后运行结果:代码:#incl ...

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

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

  4. 用链栈实现简易四则运算计算器(php版)

    栈是一种限定仅在表尾进行插入和删除操作的线性表.栈的应用有很多,比如常见的递归,计算机表达式求值等.下面我们用栈来实现简易的四则运算计算器. 列一下本文的思路: 实现链栈的数据结构及其操作 中缀表达式 ...

  5. java使用链栈实现迷宫求解

    java实现链栈在前面有所介绍:http://www.cnblogs.com/lixiaolun/p/4644141.html java实现链栈的代码: package stackapplicatio ...

  6. 使用链栈来对十进制数进行任意进制的转换

    使用辗转相除法,通过链栈来实现一个十进制数字对任意进制的一个转换,提前声明,这里不包括一进制和零进制的转换. #include"stdio.h" #include<stdli ...

  7. java使用链栈实现数制转换

    java实现链栈在前面有所介绍:http://www.cnblogs.com/lixiaolun/p/4644141.html 将前面java实现链栈的代码稍作修改: package linkedst ...

  8. 数据结构第八篇——链栈

    ♥注:未经博主同意,不得转载. 链栈 链式存储的栈称为链栈.可用单链表来实现链栈,因此其节点结构与单链表的结构相同.下面给出这种结构的定义: 若要了解顺序栈的内容请跳转至http://www.cnbl ...

  9. 注意链栈next指针的指向,与队列不同:

    如果插入一个元素,它的next指针是指向前一个已经在栈中的元素的 而队列则是,插入一个元素,其next指针是往外指,指向空. 链栈的next指针之所以这样,是方便删除操作,这一点可以在编程的过程中体会 ...

  10. 第5周实践项目2 链栈的算法库建立

    listack.h#ifndef LISTACK_H_INCLUDED #define LISTACK_H_INCLUDEDtypedef char ElemType; typedef struct ...

最新文章

  1. HDU 3507:Print Article
  2. ai文件如何打开及常见文件的打开方式
  3. 信息系统项目管理师:第6章:项目进度管理-章节真题
  4. python docker库
  5. python numba报错_python – 使用pip升级到numba 0.16会导致错误
  6. Myeclipse修改jdk版本流程
  7. linux mysql 5.7.10_CentOS7 安装 MySQL 5.7.10
  8. 微信小程序报错40163-“errmsg“解决方案
  9. flutter BoxDecoration设置背景 image 报错:type ‘Image‘ is not a subtype of type ‘ImageProvider<Object> 解决方法
  10. 阿里数据科学家一次讲透数据中台,15页PPT精华,速转走!
  11. sox免安装直接使用
  12. HPE主机根据磁盘序列号或位置确定Naa号
  13. linux加载模块失败,linux 第二次加载netlink模块时,内核创建sock失败
  14. android 手机分区失败怎么办,一种Android系统Data分区自修复方法及系统专利_专利查询 - 天眼查...
  15. 图解HIVE页面单跳转化率
  16. 计算机一级excel建立数据透视表,计算机二级Office:Excel数据透视表和透视图
  17. 十进制如何转化成二进制c语言,c语言怎么将十进制转化成二进制
  18. php工程师是干什么的
  19. linux ssr客户端 npmjs,umijs使用服务器端渲染ssr
  20. bldc电机减速原理

热门文章

  1. 字符串包含单引号加上mybitis${}写法引发的plese exclude tableName or statementId异常
  2. vue3实战项目——网易云App【01-项目准备】
  3. XP与Win7默认下时间分隔符不同
  4. 微信消息收发与微信内部emoji表情转义
  5. java severlet 获取当前路径_Java 获取当前路径的方法总结
  6. linux宝塔关闭防火墙,宝塔控制面板如何关闭防火墙
  7. C语言编程————杨辉三角
  8. 【济南校区】将来的你,一定会感谢现在拼命的自己
  9. 共享美容院营销新概念与盈利模式
  10. 前端开发学习笔记(一):HTML