数据结构(六)---队列的链式存储的实现---java版
---------------------------------------------節(jié)點(diǎn)設(shè)置------------------------------------
package com.cn.hbut.domain;
//節(jié)點(diǎn)設(shè)置 ? ? ? ? ? ? ? ? ??
public class Node {
Object data;
Node next;
//初始化一個(gè)數(shù)據(jù)域以及next域均為null的節(jié)點(diǎn)
public Node() {
this.data=null;
this.next=null;
}
//生成元素為obj,引用值為n的新節(jié)點(diǎn)
public Node(Object obj,Node n){
data=obj;
next=n;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
@Override
public String toString() {
return "Node [data=" + data + ", next=" + next + "]";
}
}
----------------------------------------接口定義-------------------------------------------
package com.cn.hbut.dao;
public interface Queue {
public void clear();
public int length();
public boolean full();
public boolean empty();
//入隊(duì)
public boolean enque(Object e);
//出隊(duì),需要?jiǎng)h除第一個(gè)元素
public Object dlque();
//獲取隊(duì)頭元素
public Object getf();
}
---------------------------------------具體的實(shí)現(xiàn)-----------------------------------------
package com.cn.hbut.daoImpl;
import com.cn.hbut.dao.Queue;import com.cn.hbut.domain.Node;
/**
?* @author Administrator
?* 隊(duì)列的特點(diǎn):
?* 1.只允許在隊(duì)尾插入,隊(duì)首刪除元素;
?* 2.先進(jìn)先出
?* 3.無(wú)大小限制(存貯范圍內(nèi))
?*/
public class LinkedQue implements Queue {
Node front,rear;
public LinkedQue() {
front=rear= new Node();
}
@Override
public void clear() {
front.setNext(null);
//對(duì)尾指向隊(duì)頭
rear =front;
}
@Override
public int length() {
int i=0;
Node p= front.getNext();
while(p!=null){
p=p.getNext();
i++;
}
return i;
}
@Override
public boolean full() {
return false;
}
@Override
public boolean empty() {
return front==rear;
}
@Override
public boolean enque(Object e) {
//加入的節(jié)點(diǎn)的next域存放隊(duì)尾的next域
Node p = new Node(e, rear.getNext());
rear.setNext(p);
//把p設(shè)置為隊(duì)尾
rear=p;
return true;
}
//出隊(duì),刪除第一個(gè)元素
@Override
public Object dlque() {
Node s = front.getNext();
Object obj =s.getData();
front.setNext(s.getNext());
return obj;
}
//獲取隊(duì)首元素,無(wú)需刪除
@Override
public Object getf() {
return front.getNext().getData();
}
//-----------------------------測(cè)試鏈隊(duì)--------------------------
public static void main(String[] args) {
//創(chuàng)建一個(gè)鏈隊(duì)
LinkedQue que = new LinkedQue();
//三個(gè)元素開(kāi)始入隊(duì)
que.enque(1);
que.enque(2);
que.enque(3);
System.out.println("隊(duì)列元素大小"+que.length());
//獲取隊(duì)首元素
Object obj=que.getf();
System.out.println("隊(duì)首元素:"+obj);
//出隊(duì)一個(gè)元素
que.dlque();
//當(dāng)前的隊(duì)頭元素
System.out.println("出隊(duì)一個(gè)元素后的隊(duì)首元素:"+que.getf());
}
}
總結(jié)
以上是生活随笔為你收集整理的数据结构(六)---队列的链式存储的实现---java版的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 螺旋数组的输出
- 下一篇: 数据结构(七)---循环队列的实现---