//=================================================
// File Name : LinkQueue_demo
//------------------------------------------------------------------------------
// Author : Common //类名:FirstLastList
//属性:
//方法:
class FirstLastList_long{
private Link_long first;
private Link_long last; public FirstLastList_long() { //构造函数
this.first = null;
this.last = null;
} public boolean isEmpty(){
return (first == null);
} public void insertFirst(long dd){ //从链表的头开始插入
Link_long newLink = new Link_long(dd);
if(isEmpty()){
last = newLink; //不用改变first
}
newLink.next = first;
first = newLink;
} public void insertLast(long dd){ //从链表的尾开始插入
Link_long newLink = new Link_long(dd);
if(isEmpty()){
first = newLink; //不用改变last
}else{
last.next = newLink; //在last后面添加新元素,并修改last的位置
}
last = newLink; //注意:只有一个元素的时候,插入要把last也赋为newLink
} public long deleteFirst(){
Link_long temp = first; //暂存first
if(first.next == null){ //如果只有一个元素,把last也赋为null
last = null;
}
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;
}
} } //类名:LinkQueue
//属性:
//方法:用双端链表实现队列
class LinkQueue{
private FirstLastList_long theList; public LinkQueue() { //构造函数
theList = new FirstLastList_long(); //创建一个双端链表对象
} public void push(long j){ //从链表的尾开始插入,新来的元素在尾部
theList.insertLast(j);
} public long pop(){
return theList.deleteFirst(); //从链表的头开始弹出,先进的元素先被弹出
} public boolean idEmpty(){
return theList.isEmpty();
} public void displayQueue(){
System.out.println("Queue (front-->rear)");
theList.displayList();
}
} //主类
//Function : LinkQueue_demo
public class LinkQueue_demo { public static void main(String[] args) {
// TODO 自动生成的方法存根
LinkQueue theQueue = new LinkQueue();
theQueue.push(10);
theQueue.push(20);
theQueue.push(30);
theQueue.displayQueue(); theQueue.pop();
theQueue.pop();
theQueue.displayQueue();
} }

Java数据结构——用双端链表实现队列的更多相关文章

  1. java数据结构-09双端队列

    一.相关概念: (Deque)双端队列能够在队头.队尾进行添加.删除等操作  二.接口设计:  三.代码实现 public class Deque<E> { private List< ...

  2. Java数据结构和算法(四)--链表

    日常开发中,数组和集合使用的很多,而数组的无序插入和删除效率都是偏低的,这点在学习ArrayList源码的时候就知道了,因为需要把要 插入索引后面的所以元素全部后移一位. 而本文会详细讲解链表,可以解 ...

  3. 队列(存储结构双端链表)--Java实现

    /*用链表实现的队列--使用的是双端链表 *注意:空指针错误肯定是引用没有指向对象 * */ public class MyLinkedQueue { private MyFirstAndLastLi ...

  4. 《Java数据结构与算法》笔记-CH5-链表-3双端链表

    /** * 双端链表的实现 */ class LinkA { public long dData; public LinkA next; public LinkA(long d) { dData = ...

  5. java数据结构——单链表、双端链表、双向链表(Linked List)

    1.继续学习单链表,终于摆脱数组的魔爪了,单链表分为数据域(前突)和引用域(指针域)(后继),还有一个头结点(就好比一辆火车,我们只关心火车头,不关心其它车厢,只需知晓车头顺藤摸瓜即可),头结点没有前 ...

  6. Java单链表、双端链表、有序链表实现

    单链表: insertFirst:在表头插入一个新的链接点,时间复杂度为O(1) deleteFirst:删除表头的链接点,时间复杂度为O(1) 有了这两个方法,就可以用单链表来实现一个栈了,见htt ...

  7. JAVA基础——链表结构之双端链表

    双端链表:双端链表与传统链表非常相似.只是新增了一个属性-即对最后一个链结点的引用 如上图所示:由于有着对最后一个链结点的直接引用.所以双端链表比传统链表在某些方面要方便.比如在尾部插入一个链结点.双 ...

  8. java实现双端链表

    PS:双端链表(持有对最后一个节点的引用,允许表尾操作与表头操作等效的功能) public class DoubleLinkedList { //节点类 static class Node { pub ...

  9. 双端链表--Java实现

    /*双端链表--比普通链表多了一个指向最后一个节点的引用 * 特点: 链表可以进行尾巴插入--输出顺序和输入顺序一致 * 但是不可以进行尾巴删除因为没有倒数第二节点的引用 * */ public cl ...

随机推荐

  1. C# Label显示多行文本及换行(WinForm/WebForm)

    转载: http://www.cnblogs.com/greatverve/archive/2011/10/20/label-multi.html WinForm 很多朋友都会在开发WinForm中遇 ...

  2. oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务。

    来源于:http://www.cnblogs.com/wangfg/p/5110831.html 一.查询系统中的job,可以查询视图 --相关视图 select * from dba_jobs; s ...

  3. MySQL多实例

    http://www.kancloud.cn/digest/mysqlsummary/132842http://crazy123.blog.51cto.com/1029610/1611887/ htt ...

  4. Dubbo系列(1)_背景介绍和基本情况

    一.本文目的         主要介绍Dubbo的产生背景和需要解决的问题 二.产生背景         随着大数据量.高并发的互联网应用越来越多,单机系统已经无法满足系统的需要.通过SOA搭建一个分 ...

  5. android studio-创建第一个项目

    打开android studio 开始界面和Xcode有点类似,点击New project新建一个工程,新建过程和在Eclipse上差不多,这里就不赘述了. 下面开始新建项目 填写项目名称,和存放地址 ...

  6. python面试大全

    问题一:以下的代码的输出将是什么? 说出你的答案并解释. class Parent(object): x = 1 class Child1(Parent): pass class Child2(Par ...

  7. 升级ubuntu,apt-get update出现Hash Sum mismatch

    sudo apt-get update 出现Hash Sum mismatch cd /var/lib/apt sudo rm -fr lists sudo mkdir lists sudo mkdi ...

  8. jsp页面的forEach和判断

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <c:forE ...

  9. [日常训练]FJ省夏令营day1

    T1 Description 给出n个矩形的顶点坐标(每个矩形的底边都在x轴上),求这n个矩形所组成图形的轮廓线的顶点. Input 第一行一个整数n,表示矩形个数. 以下n行,每行3个整数,分别表示 ...

  10. 【BZOJ-3638&3272&3267&3502】k-Maximum Subsequence Sum 费用流构图 + 线段树手动增广

    3638: Cf172 k-Maximum Subsequence Sum Time Limit: 50 Sec  Memory Limit: 256 MBSubmit: 174  Solved: 9 ...