数据结构——链栈
来源:互联网 发布:右肩膀酸痛 知乎 编辑:程序博客网 时间:2024/06/18 06:24
Java实现的链栈数据结构
LinkNode(节点)—封装—>LinkList(链表)—封装—>LinkStack(链栈)
基本的数据单元 节点
LinkNode.java
/** * 链表的核心,节点 * * @author mingwei * */public class LinkNode {/** * 用来存储节点要存储的数据 */Object mData;/** * 用来指向当前节点的下一个节点 */LinkNode mNext;/** * 节点的构造方法 * * @param data * 节点存储的数据 */public LinkNode(Object data) {mData = data;}}
链表结构,从头部插入和删除节点
/** * 链表,有一个头结点 * * 在链表的头部插入一个节点的方法 ->addHeadNode * * 删除链表头部的一个节点的方法->removeHeadNode * * @author mingwei * */public class LinkList {/** * 链表的名字 */String mName;/** * 头结点 */LinkNode mHeadNode;/** * 构造方法,传入链表的名字 * * @param name */public LinkList(String name) {mName = name;}/** * 添加一个头结点的 * * 步骤: * * 1.创建一个节点 * * 2.把原来头结点赋值到创建的这个节点的next上 * * 3.头节点引用指向这个新假如的新节点 * * @param data * 添加的新节点的数据 */public void addHead(Object data) {LinkNode node = new LinkNode(data);node.mNext = mHeadNode;mHeadNode = node;}/** * 移除一个头结点 * * 步骤: * * 1.头结点赋值给一个临时的节点 * * 2.头结点引用指向的节点向后挪一位,其实上一个节点并没有删除,上一个节点还存在,只是链表的特殊性从前往后找, * 这样一来头结点前面的节点就已经无法在找到了 * * @return */public Object removeHead() {if (mHeadNode == null) {throw new IndexOutOfBoundsException(mName + "'s headnode is null");}LinkNode temp = mHeadNode;mHeadNode = mHeadNode.mNext;return temp.mData;}/** * 打印当前的链表 * * 步骤:从头结点循环打印链表的所有数据 */public void printLinkList() {if (mHeadNode == null) {System.out.println(mName + "=linklist is null");return;}LinkNode node = mHeadNode;System.out.print(mName + "=");while (node != null) {System.out.print(node.mData + "|");node = node.mNext;}System.out.print("\n");}}
/** * 使用链表实现一个链栈 * * push 压栈 * * pop 出栈 * * @author mingwei * */public class LinkStack {/** * 存储链栈的所有数据,以链表的形式 */LinkList mLinkList = new LinkList("链栈");/** * 入栈 */public void push(Object node) {mLinkList.addHead(node);}/** * 出栈 * * @return 当前移除的栈 */public Object pop() {return mLinkList.removeHead();}/** * 打印链表 */public void printStack() {mLinkList.printLinkList();}}
使用:
public class Test {public static void main(String[] args) {LinkStack stack = new LinkStack();stack.push("a");stack.push("b");stack.push("a");stack.printStack();stack.pop();stack.printStack();}}结果:
链栈=a|b|a|链栈=b|a|
0 0
- 数据结构——链栈
- 数据结构——什么是数据结构
- 【大话数据结构】——-数据结构
- 数据结构 —— 数据结构概述
- [数据结构]数据结构——链表法
- PHP数据结构之一:PHP数据结构基本概念—数据结构
- 数据结构——基本数据结构之栈
- 数据结构——基本数据结构之队列
- 数据结构——基本数据结构之有根树
- 数据结构——基本数据结构之栈
- 数据结构——基本数据结构之队列
- 数据结构——大话数据结构源码
- 数据结构学习总结——数据结构概述
- 大话数据结构——数据结构绪论
- 【大话数据结构】——-数据结构概述
- 数据结构(1)——大话数据结构
- 数据结构(2)——大话数据结构
- 数据结构实验四——链栈
- TCP三次握手/四次挥手详解
- SpringMVC 日志管理之 jcl-over-slf4j log桥接工具
- Android自定义控件系列八:详解onMeasure()(二)--利用onMeasure测量来实现图片拉伸永不变形,解决屏幕适配问题
- 虚拟空间使用ASP.NET预编译注意事项
- Reverse Linked List II
- 数据结构——链栈
- easyui-editing datagrid 批量保存数据 一
- 所谓学风建设
- linux test命令
- 15第八周项目一——实现复数类中的运算符重载(成员函数)
- Python正则表达式(re)
- 第八周上机实践项目3——分数类的运算符重载(1)
- 面向对象的思维方式
- C++编程思想学习笔记---第八章 常量