java数据结构之LinkedDeque2(用链表实现的双端双向队列,addBack时调用节点的构造函数稍有不同)
来源:互联网 发布:网络侠客行txt全集下载 编辑:程序博客网 时间:2024/06/05 11:27
package com.jimmy.impl;
import com.jimmy.QueueInterf;
public class DoubleDirectionLinkedQueue<T>implements QueueInterf<T> {
/**
* @param args
*/
public DLNode<T>first;
public DLNode<T>last;
publicintlength;
// |----| |-----| |----|
// | first|--> | 4 | | 5 | | 3 | <--|last| length=3
// |----| |-----| |----|
privateclass DLNode<T> {
private Tdata;
public T getData() {
returndata;
}
publicvoidsetData(T data) {
this.data = data;
}
public DLNode<T>next;
public DLNode<T>pre;
publicDLNode(){
this.data=null;
next=null;
}
publicDLNode(T data){
this.data=data;
next=null;
}
public DLNode(T data,DLNode<T> next){
this.data=data;
this.next=next;
}
}
public DoubleDirectionLinkedQueue(){
first=null;
last=null;
}
publicstaticvoid main(String[] args) {
DoubleDirectionLinkedQueue<Integer> q=new DoubleDirectionLinkedQueue<Integer>();
q.addFront(4);
q.addFront(5);
q.addFront(3);
q.display();
//q.dequeue();
//q.dequeue();
//q.display();
}
//在前面插入,调用构造函数有第一种linkedQueue稍有不同
publicvoid addFront(T newEntry) {
DLNode<T> newDLNode=new DLNode<T>(newEntry,null);
if(isEmpty())
{
first=newDLNode;
last=newDLNode;
// |----|
// | first|--> | 4 | <--|last|
// |----|
}else{
//这里与第一种linkedQueue得写法也稍有不同
first.pre=newDLNode;
newDLNode.next=first;
first=newDLNode;
}
length++;
}
//在后面插入,调用构造函数有第一种linkedQueue稍有不同
publicvoid addBack(T newEntry) {
DLNode<T> newDLNode=new DLNode<T>(newEntry,null);
if(isEmpty())
{
first=newDLNode;
last=newDLNode;
// |----|
// | first|--> | 4 | <--|last|
// |----|
}else{
//这里与第一种linkedQueue得写法也稍有不同
last.next=newDLNode;
newDLNode.pre=last;
last=newDLNode;
}
length++;
}
public T dequeue() {
T front=null;
if(!isEmpty())
{
front=first.getData();
first=first.next;
}
length--;
return front;
}
public T getFront() {
T front=null;
if(!isEmpty())
{
front=first.getData();
}
return front;
}
publicboolean isEmpty() {
returnfirst==null;
}
publicvoid clear() {
first=null;
last=null;
}
publicint getLength()
{
returnlength;
}
publicvoid display() {
DLNode<T> cur=last;
while(cur!=null){
//if(cur!=null)
System.out.print(cur.getData()+",");
cur=cur.pre;
}
System.out.println();
}
publicvoid enqueue(T newEntry) {
//TODO Auto-generated method stub
}
}
- java数据结构之LinkedDeque2(用链表实现的双端双向队列,addBack时调用节点的构造函数稍有不同)
- java数据结构之LinkedDeque(用链表实现的双端(即头尾两个哨兵节点)双向(node里两个指向)队列)
- 【JAVA数据结构】带dummy节点的双向队列
- 一个用Java实现的双向队列,可以分别在头尾插入和删除节点
- 是否有初始化列表、参数是否为引用时调用构造函数和析构函数的执行顺序
- Java双向队列,用双向链表实现的
- 数据结构之队列的java实现
- 数据结构之队列的实现(JAVA)
- java数据结构之线性队列的实现
- java数据结构之链式队列的实现
- 数据结构之队列的Java实现
- JAVA数据结构之顺序队列的实现
- JAVA数据结构之链式队列的实现
- JAVA数据结构之循环队列的实现
- 数据结构学习之队列的Java实现
- java 数据结构 之 队列的实现 (二)
- 数据结构 --- Java之队列的实现
- java数据结构之LinkedQueue(用链表实现的双端单向队列)
- Oracle的内连接、左外连接、右外连接及全外连接
- 集群中MPI简单配置
- 关于下拉更新框架 EGORefreshTableHeaderView在Xcode4.2中, ARC下面的使用
- 60beat GamePad推iOS设备的配套游戏手柄
- 网游客户端随想---3
- java数据结构之LinkedDeque2(用链表实现的双端双向队列,addBack时调用节点的构造函数稍有不同)
- php的IMAP的应用实例(实现收发邮件、删除邮件、附件下载等功能,解决中文乱码问题)
- 设置tomcat虚拟内存大小,解决上传数据量大的文件,报内存溢出的问题。
- 算法导论代码 第8章 线性时间排序
- C51---串口通信---虚拟终端模仿
- JavaScript例子1
- 黑马程序员_交通灯系统
- 黑莓手机上的CRM: Salesforce和SugarCRM
- 项目中框架小结