Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >java之学习用LinkedList模拟栈数据结构的集合并测试

java之学习用LinkedList模拟栈数据结构的集合并测试

作者头像
吾爱乐享
发布于 2018-07-12 09:49:07
发布于 2018-07-12 09:49:07
7270
举报
文章被收录于专栏:吾爱乐享吾爱乐享

结果示意图

请点击此处输入图片描述

Linkedlist定义:

 LinkedList数据结构是一种双向的链式结构,每一个对象除了数据本身外,还有两个引用,分别指向前一个元素和后一个元素,和数组的顺序存储结构(如:ArrayList)相比,插入和删除比较方便,但修改和查询速度会慢一些。

栈数据结构:

栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。 (1)通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。 (2)当表中没有元素时称为空栈。 (3)栈为后进先出(Last In First Out)的线性表,简称为LIFO表。 栈的修改是按后进先出的原则进行。每次删除(退栈)的总是当前栈中”最新”的元素,也就是最先插入的元素最后弹栈,就像弹夹一样

原理:

栈的特点就是先进后出,而linkedlist有两个方法,public void addLast(E e); 向后增加,也就是先进的原则 public E removeLast() 删除第一个元素,也就是后出的原则,利用linkedlist的这两个特有功能就可以模拟栈数据结构

案例源码:


package com.fenxiangbe.list;

import java.util.LinkedList;

public class Demo_Linkedlist3 {

public static void main(String[] args) {

LinkedList<String> l = new LinkedList<>();

//模拟进栈

l.addLast(“a”);

l.addLast(“b”);

l.addLast(“c”);

l.addLast(“d”);

System.out.println(“进栈的顺序是:” + l);

//模拟弹栈

System.out.print(“弹栈的顺序是:”);

while(!l.isEmpty()){

System.out.print(l.removeLast());

}

}

}


以上代码看似是达到模拟栈数据结构先进后出,结果也达到了,但是真正的模拟栈数据结构,就需要创建一个类将Linked中的方法封装

步骤:

  1. 首先创建一个stack的类把linkedlist方法封装起来
  2. 然后创建一个类创建stack类的对象进行模拟

stack类的案例代码:


package com.fenxiangbe.list;

import java.util.LinkedList;

public class Stack {

private LinkedList l = new LinkedList();

//模拟进栈方法

public void in(Object o){

l.addLast(o);

}

//模拟出栈方法

public Object out(){

return l.removeLast();

}

//模拟栈结构是否为空

public boolean isEmpty(){

return l.isEmpty();

}

@Override

public String toString() {

return “” + l + “”;

}

}


Demo_Linkedlist3类的案例代码:


package com.fenxiangbe.list;

public class Demo_Linkedlist3 {

public static void main(String[] args) {

Stack s = new Stack();

s.in(“a”);

s.in(“b”);

s.in(“c”);

s.in(“d”);

System.out.println(“进栈的顺序是:” + s);

System.out.print(“弹栈的顺序是:”);

while(!s.isEmpty()){

System.out.print(s.out());

}

}

}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-10-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
《数据结构与算法之美》- 栈
提到“栈”,做Java的同学还会想起Java内存模型中的“栈”,与之紧密关联的还有一个名词——堆,但是这里,此栈非彼栈。
JackieZheng
2018/12/21
6480
【数据结构四】栈与Stack详解
Java中的Stack继承了Vector,Vector和ArrayList类似,都是动态的顺序表,不同的是Vector是线程安全的。Stack继承了Vector的所有方法,也有一些自己的方法,如下:
小皮侠
2024/04/08
1040
【数据结构四】栈与Stack详解
Java数据结构和算法(四)——栈
根据提供的文章内容,总结了关于使用栈实现字符串逆序和分隔符匹配的要点,并返回了json格式的摘要总结。
IT可乐
2018/01/04
9080
Java数据结构和算法(四)——栈
23张图!万字详解「链表」,从小白到大佬!
链表和数组是数据类型中两个重要又常用的基础数据类型,数组是连续存储在内存中的数据结构,因此它的优势是可以通过下标迅速的找到元素的位置,而它的缺点则是在插入和删除元素时会导致大量元素的被迫移动,为了解决和平衡此问题于是就有了链表这种数据类型。
磊哥
2020/11/06
6090
Java实现基本数据结构(二)——栈
阅读本文前,最好先学习顺序表的基本操作和实现原理,也就是弄清楚数组的原理,点击Java实现基本数据结构(一)——数组学习前置内容。学习效果更好哦!
星如月勿忘初心
2020/08/02
7640
java之学习LinkedList的特有功能及案例分析
结果示意图 LinkedList类概述 LinkedList 和 ArrayList 一样,都实现了 List 接口,但其内部的数据结构有本质的不同。LinkedList 是基于链表实现的,所以它的插
吾爱乐享
2018/07/12
6260
【数据结构】什么是栈?
生活中类似于栈"先进后出"概念的东西很多,如我们平常用的抽纸,装羽毛球的球筒,装子弹的弹夹等.
修修修也
2024/04/01
1120
【数据结构】什么是栈?
从 0 开始学习 JavaScript 数据结构与算法(三)栈
数组是一个线性结构,并且可以在数组的任意位置插入和删除元素。但是有时候,我们为了实现某些功能,必须对这种任意性加以限制。栈和队列就是比较常见的受限的线性结构。
XPoet
2021/04/26
5740
数据结构 之 栈(Stack)
如图所示,每次在栈中添加元素或者取出元素时,只能在栈顶进行操作,这就是后进先出的原则
AUGENSTERN_
2024/04/09
1210
数据结构 之 栈(Stack)
结构与算法(02):队列和栈结构
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
知了一笑
2020/09/10
3790
常见数据结构
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算(先进后出)。这一端被称为栈顶,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
半路出学
2021/12/21
3740
数据结构-栈
栈(英语:stack)又称为堆栈或堆叠,栈作为一种数据结构,它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。   由于堆叠数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last In First Out)的原理运作。栈也称为后进先出表
杨小杰
2019/06/03
4320
【Java数据结构】详解Stack与Queue(一)
由于顺序栈是由顺序存储实现的,所以其底层是一个动态数组 。以下是其模拟实现的代码。
E绵绵
2024/06/04
1120
【Java数据结构】详解Stack与Queue(一)
【Java数据结构学习笔记之二】Java数据结构与算法之栈(Stack)实现
  本篇是java数据结构与算法的第2篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型   栈是一种用于存储数据的简单数据结构,有点类似链表或者顺序表(统称线性表),栈与线性表的最大区别是数据的存取的操作,我们可以这样认为栈(Stack)是一种特殊的线性表,其插入和删除操作只允许在线性表的一端进行,一般而言,把允许操作的一端称为栈顶(Top),不可操作的一端称为栈底(Bottom),同时把插入元素的操作称
Angel_Kitty
2018/04/09
7410
【Java数据结构学习笔记之二】Java数据结构与算法之栈(Stack)实现
重学数据结构(二、栈)
比如上面的羽毛球筒,只能将最顶端的羽毛球移出,也只能将新的羽毛球放到最顶端——这两种操作分别称作入栈( Push)和出栈( Pop)。入栈和出栈的示意图如下:
三分恶
2020/08/30
3750
数据结构与算法(四)| 队列、栈与Java集合
比如,实现图的宽度优先遍历,但是要求用栈实现;实现图的深度优先遍历,但是要求用队列实现。
行百里er
2021/07/14
4980
JAVA零基础小白学习免费教程day13-Collection&数据结构
JAVASE提供了满足各种需求的API,在使用这些API前,先了解其继承与接口操作架构,才能了解何时采用哪个类,以及类之间如何彼此合作,从而达到灵活应用。
张哥编程
2024/12/13
910
JAVA零基础小白学习免费教程day13-Collection&数据结构
数据结构(数组、链表、栈、队列、树)
二叉树(Binary tree)是树形结构的一个重要类型。二叉树特点是每个结点最多只能有两棵子树,且有左右之分。许多实际问题抽象出来的数据结构往往是二叉树形式,二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。
鱼找水需要时间
2023/04/28
3850
数据结构(数组、链表、栈、队列、树)
Java 数据结构 demo
以下实例演示了如何使用堆栈进行表达式的堆栈将中缀(Infix)表达式转换成后缀(postfix)表达式:
默 语
2024/11/20
890
LinkedList集合
LinkedList集合数据存储的结构是链表结构。方便元素添加、删除的集合。实际开发中对一个集合元素的添加与删除经常涉及到首尾操作,而LinkedList提供了大量首尾操作的方法。
星哥玩云
2022/09/14
2310
推荐阅读
相关推荐
《数据结构与算法之美》- 栈
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档