java数据结构之LinkedQueue(用链表实现的双端单向队列)
来源:互联网 发布:edius软件下载 mac 编辑:程序博客网 时间:2024/06/05 02:53
1.接口
package com.jimmy;
public interface QueueInterf<T> {
//入队列,放在队列后头
public void enqueue(T newEntry);
//出队列,从队列开头出
public T dequeue();
public T getFront();
public boolean isEmpty();
//删除队列中所有元素
public void clear();
}
2.链表实现的双端队列(单向,节点里没有pre)
first;//前(端)哨兵节点,这里不同与MylinkedList的做法,并没有初始化first,last对象,仅仅把它当做引用,但仍然可以理解为哨兵,//有点像C的做法
last;//后(端)哨兵节点
// |----| |-----| |----|
// | first|--> | 4 | | 5 | | 3 | <--|last| length=3
// |----| |---- -| |----|
package com.jimmy.impl;
import com.jimmy.Node;
import com.jimmy.QueueInterf;
import com.jimmy.ListInterface.MNode;
public class LinkedQueue<T>implements QueueInterf<T> {
/**
* @param args
*/
public class Node {
private Tdata;
private Nodenext;
public Node(T data, Node node) {
this.data = data;
next = node;
}
public T getData() {
returndata;
}
}
public Node<T>first;//前(端)哨兵节点,这里不同与MylinkedList的做法,并没有初始化first,last对象,仅仅把它当做引用,但仍然可以理解为哨兵
public Node<T>last;//后(端)哨兵节点
publicintlength;//有效数据长度
// |----| |-----| |----|
// | first|--> | 4 | | 5 | | 3 | <--|last| length=3
// |----| |-----| |----|
public LinkedQueue(){
first=null;//这里不同与MylinkedList的做法,并没有初始化first,last对象
last=null;
}
publicstaticvoid main(String[] args) {
LinkedQueue<Integer> q=new LinkedQueue<Integer>();
q.enqueue(4);
q.enqueue(5);
q.enqueue(3);
q.display();
q.dequeue();
q.dequeue();
q.display();
}
publicvoid enqueue(T newEntry) {
Node<T> newNode=new Node<T>(newEntry,null);
if(isEmpty())
{
first=newNode;// 仅仅把fist当做引用,所以直接赋值给first,即把newnode当做第一个first
last=newNode;
// |----|
// | first|--> | 4 | <--|last|
// |----|
}else{
last.next=newNode;//有点像C的做法
last=newNode;
}
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() {
Node<T> cur=first;//first为哨兵
while(cur!=null){//从一开始
//if(cur!=null)
System.out.print(cur.getData()+",");
cur=cur.next;
}
System.out.println();
}
}
- java数据结构之LinkedQueue(用链表实现的双端单向队列)
- LinkedQueue链式队列方法的实现
- 数据结构——LinkedQueue的实现
- [C++]数据结构:链表描述的队列LinkedQueue类
- 数据结构之 (单向)队列
- java实现数据结构之单向链表
- 数据结构之队列的java实现
- 数据结构之队列的实现(JAVA)
- java数据结构之线性队列的实现
- java数据结构之链式队列的实现
- 数据结构之队列的Java实现
- JAVA数据结构之顺序队列的实现
- JAVA数据结构之链式队列的实现
- JAVA数据结构之循环队列的实现
- 数据结构学习之队列的Java实现
- java 数据结构 之 队列的实现 (二)
- 数据结构 --- Java之队列的实现
- java 实现数据结构之队列
- android2.2下编译c模块
- 关于性能优化的以及int Number uint的比较
- Kinect 微软Xbox 360
- SQL SERVER2008 存储过程、表、视图、函数的权限
- Extjs学习总结之11前端与后台的数据交互ajax
- java数据结构之LinkedQueue(用链表实现的双端单向队列)
- 数据库设计范式
- c#创建windows服务步骤并打包
- Android中AsyncTask类解析
- WinCE远程桌面的实现
- libmemcached安装及简单例子
- macbook a 1286 ,Boot Camp 4.0 + Windows 7 蓝屏报错 Cache Manager的解决方案
- android开发规范
- WinCE API