Java数据结构——用链表实现栈
//=================================================
// 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实现 数据结构:链表、 栈、 队列、优先级队列、哈希表
java实现 数据结构:链表. 栈. 队列.优先级队列.哈希表 数据结构javavector工作importlist 最近在准备找工作的事情,就复习了一下java.翻了一下书和网上的教材,发现虽然 ...
- JAVA数据结构之链表
JAVA数据结构之链表 什么是链表呢? 链表作为最基本的数据结构之一,定义如下: 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的. 简单来说呢,链 ...
- 【Java数据结构学习笔记之二】Java数据结构与算法之栈(Stack)实现
本篇是java数据结构与算法的第2篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型 栈是 ...
- java数据结构与算法之栈(Stack)设计与实现
本篇是java数据结构与算法的第4篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型 栈是一种用于 ...
- Java数据结构和算法(一)--栈
栈: 英文名stack,特点是只允许访问最后插入的那个元素,也就是LIFO(后进先出) jdk中的stack源码: public class Stack<E> extends Vector ...
- Java数据结构与算法(2):栈
栈是一种线性表,特点在于它只能在一个位置上进行插入和删除,该位置是表的末端,叫做栈的顶(top).因此栈是后进先出的(FIFO).栈的基本操作有push.peek.pop. 栈的示意图 进栈和出栈都只 ...
- JAVA数据结构——单链表
链表:一. 顺序存储结构虽然是一种很有用的存储结构,但是他有如下几点局限性:1. 因为创造线性表的时候已经固定了空间,所以当需要扩充空间时,就需要重新创建一个地址连续的更大的存储空间.并把原有的数据元 ...
- java实现单链表、栈、队列三种数据结构
一.单链表 1.在我们数据结构中,单链表非常重要.它里面的数据元素是以结点为单位,每个结点是由数据元素的数据和下一个结点的地址组成,在java集合框架里面 LinkedList.HashMap(数组加 ...
- 数据结构之链表、栈和队列 java代码实现
定义抽象节点类Node: package cn.wzbrilliant.datastructure; /** * 节点 * @author ice * */ public abstract class ...
随机推荐
- 区间DP poj 2955
求最多有几个括号可以匹配 #include<stdio.h> #include<string.h> #include<algorithm> using namesp ...
- hdu3416 判断最短路是否唯一(每条边只能走一次)
Marriage Match IV Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- Android任务和返回栈完全解析,细数那些你所不知道的细节
附:Android task详解 出处:http://blog.csdn.net/guolin_blog/article/details/41087993 原文: http://developer. ...
- MySQ中Lmax_connections的合理设置
max_connections 是指整个mysql服务器的最大连接数max_used_connections 是指每个数据库用户的最大连接数 MySQL服务器的连接数并不是要达到最大的100%为好,还 ...
- jsp动态include和静态Include
动态 INCLUDE 用 jsp:include 动作实现 <jsp:include page="included.jsp" flush="true" / ...
- python3 连接SQLserver
pymssql 是Python语言用来连接微软 SQL SERVER 数据库的类库,实现了 Python DB API 2.0 .官网介绍. 最简事例: #!/usr/bin/env python # ...
- Android Studio上面最好用的插件
转载:http://www.jianshu.com/p/d76b60a3883d 在开发过程中,本人用的最爽的就是代码生成的插件,帮助我们自动完成大量重复简单的工作.个人也觉得代码自动生成工具是最值得 ...
- BZOJ 2683: 简单题
2683: 简单题 Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 913 Solved: 379[Submit][Status][Discuss] ...
- js-JavaScript高级程序设计学习笔记3
第五章 引用类型 1.使用new操作符和Date构造函数创建日期对象. 2.创建特定日期有两个方法--Date.parse()和Date.UTC().后者小时数为0时显示时间是8点,应该是因为本地是东 ...
- my97日期控件
http://www.seabroad.cn/cq/datepick/demo.htm 但是由于某些原因,担心这个网站不稳定,所以复制一下 一. 简介 1. 简介 目前的版本是:4.0 Prerele ...