数据结构用链表实现栈java_Java数据结构——用链表实现栈

40744ea64b611fa27b0655109a43f6ca.png

afcc913fbc996e4bbe197da5ffd8475d.png

//=================================================

// File Name :LinkStack_demo

//------------------------------------------------------------------------------

// Author :Common

//类名:Link_long

//属性:

//方法:

class Link_long{//链节点类

public long dData;

public Link_long next;//链表中下一个节点的引用

public Link_long(long dData) {

super();

this.dData = dData;

}

public void displayLink(){//显示当前节点的值

System.out.println("dData"+dData);

}

}

//类名:LinkList_long

//属性:

//方法:

class LinkList_long{

private Link_long first;//只需要第一个节点,从第一个节点出发即可定位所有节点

public LinkList_long() {//构造函数

this.first = null;

}

public boolean isEmpty(){

return (first == null);

}

public void insertFirst(long dd){//插入元素是从链表的头开始插入

Link_long newLink = new Link_long(dd);

newLink.next = first;

first = newLink;

}

public long deleteFirst(){//删除temp.dData

Link_long temp = first;//暂存first

first = first.next;//把next设为first

return temp.dData;//返回原来的first

}

public void displayList(){

System.out.println("List(first-->last):");

Link_long current = first;//用于不断改变位置实现遍历

while(current != null){

current.displayLink();

current = current.next;

}

}

public Link_long find(int key){//查找指定的关键字

Link_long current = first;

while(current.dData != key){

if(current.next == null)

return null;

else

current = current.next;

}

return current;

}

public Link_long delete(int key){//如果current的值匹配,则删除

Link_long current = first;

Link_long previous = first;

//没有匹配到值

while(current.dData != key){

if(current.next == null)

return null;

else{//pre和cur向后移动

previous = current;

current = current.next;

}

}

//匹配到值

if(current == first)//只有一个first,并匹配,则把first设成first.next

first = first.next;

else//current的值匹配,则删除,并把cur的next赋给pre的next

previous.next = current.next;

return current;

}

}

//类名:LinkList_long

//属性:

//方法:

class LinkStack{//用链表实现栈,链表从First开始插入,新的元素将变成First,先删除后来元素

private LinkList_long theList;

public LinkStack() {//构造函数

theList = new LinkList_long();

}

public void push(long j){//入栈,即在链表的First插入元素

theList.insertFirst(j);

}

public long pop(){//出栈,即删除链表的First元素

return theList.deleteFirst();

}

public boolean isEmpty(){//判断栈是否为空,即判断链表是否为空

return (theList.isEmpty());

}

public void displayStack(){

System.out.println("Stack(top-->bottom):");

theList.displayList();

}

}

//主类

//Function : LinkStack_demo

public class LinkStack_demo {

public static void main(String[] args) {

// TODO 自动生成的方法存根

LinkStack theStack = new LinkStack();

theStack.push(10);

theStack.push(20);

theStack.push(30);

theStack.displayStack();

theStack.pop();

theStack.pop();

theStack.displayStack();

}

}

java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表

java实现 数据结构:链表. 栈. 队列.优先级队列.哈希表   数据结构javavector工作importlist 最近在准备找工作的事情,就复习了一下java.翻了一下书和网上的教材,发现虽然 ...

JAVA数据结构之链表

JAVA数据结构之链表 什么是链表呢? 链表作为最基本的数据结构之一,定义如下: 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的. 简单来说呢,链 ...

【Java数据结构学习笔记之二】Java数据结构与算法之栈(Stack)实现

本篇是java数据结构与算法的第2篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型   栈是 ...

java数据结构与算法之栈(Stack)设计与实现

本篇是java数据结构与算法的第4篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型 栈是一种用于 ...

Java数据结构和算法(一)--栈

栈: 英文名stack,特点是只允许访问最后插入的那个元素,也就是LIFO(后进先出) jdk中的stack源码: public class Stack extends Vector ...

Java数据结构与算法(2):栈

栈是一种线性表,特点在于它只能在一个位置上进行插入和删除,该位置是表的末端,叫做栈的顶(top).因此栈是后进先出的(FIFO).栈的基本操作有push.peek.pop. 栈的示意图 进栈和出栈都只 ...

JAVA数据结构——单链表

链表:一. 顺序存储结构虽然是一种很有用的存储结构,但是他有如下几点局限性:1. 因为创造线性表的时候已经固定了空间,所以当需要扩充空间时,就需要重新创建一个地址连续的更大的存储空间.并把原有的数据元 ...

数据结构之链表、栈和队列 java代码实现

定义抽象节点类Node: package cn.wzbrilliant.datastructure; /** * 节点 * @author ice * */ public abstract class ...

自己动手实现java数据结构(三) 栈

1.栈的介绍 在许多算法设计中都需要一种"先进后出(First Input Last Output)"的数据结构,因而一种被称为"栈"的数据结构被抽象了出来. ...

随机推荐

解决java使用https协议请求出现证书不信任问题(PKIX path building failed)

解决https请求时出现pkix path building fail错误 方法 将submail.cer 安全证书导入到java中的cacerts证书库 (sumail是我从https://api. ...

Spring+Mybatis多数据源配置

一.配置文件 properties ds1.driverClassName=com.mysql.jdbc.Driver ds1.url=jdbc:mysql://192.168.200.130:330 ...

Qt之多窗口切换

在新建对象(下一页面)的时候,把自身的this指针带进去,然后把自身hide(),隐藏起来,在(下一页面中)要回退的时候只需通过: 1. parentWidget()->show(); //显示 ...

MYSQL中关于日期处理的函数

< DOCTYPE HTML PUBLIC -WCDTD HTML TransitionalEN> MySQL数据库中SQL语句中 关于日期.时间\时间戳的函数   一 MySQL 获得当 ...

iOS中UIKit——UIDataDetectors&lpar;数据检测器&rpar;它将电话、邮件、网址等变为链接

1.它用于UITextView和UIWebView,属性名为:dataDetetorTypes 2.此属性可以设定使符合电话.邮件.网址.符合格式的日期等文字变为链接文字. 3.电话号码点击后拨出电话 ...

Python的字符串操作和Unicode

字符串类型 str:Unicode字符串.采用''或者r''构造的字符串均为str,单引号可以用双引号或者三引号来代替.无论用哪种方式进行制定,在Python内部存储时没有区别. bytes:二进制字 ...

Unicode与汉字

当遇到\u7f3a\u5c11  这样形式的字符串时,其实它代表的是汉字   具体的网上可以进行Unicode转中文   翻译

docker&lpar;二&rpar; windows10下安装docker

官方安装文档: https://docs.docker.com/docker-for-windows/install/ https://docs.docker.com/docker-for-windo ...

Vant UI 安装

一:安装 npm i vant -S 二.引入组件(共有三个方法) 方法一:使用 babel-plugin-import (推荐) 1. 安装 babel-plugin-import 插件 npm i ...

在SELECT的时候&comma;加入一列固定值

SELECT * FROM (select id id, si_code code, si_sharetype sharetype, si_name name, si_organid organid, ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值