数据结构(六)---队列的链式存储的实现---java版

---------------------------------------------节点设置------------------------------------

package com.cn.hbut.domain;
//节点设置                   
public class Node {
Object data;
Node next;
//初始化一个数据域以及next域均为null的节点
public Node() {
this.data=null;
this.next=null;
}
//生成元素为obj,引用值为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();
//入队
public boolean enque(Object e);
//出队,需要删除第一个元素
public Object dlque();
//获取队头元素
public Object getf();

}


---------------------------------------具体的实现-----------------------------------------

package com.cn.hbut.daoImpl;

import com.cn.hbut.dao.Queue;
import com.cn.hbut.domain.Node;
/**
 * @author Administrator
 * 队列的特点:
 * 1.只允许在队尾插入,队首删除元素;
 * 2.先进先出
 * 3.无大小限制(存贮范围内)
 */
public class LinkedQue implements Queue {
Node front,rear;
public LinkedQue() {
front=rear= new Node();
}
@Override
public void clear() {
front.setNext(null);
//对尾指向队头
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) {
//加入的节点的next域存放队尾的next域
Node p = new Node(e, rear.getNext());
rear.setNext(p);
//把p设置为队尾
rear=p;
return true;
}
//出队,删除第一个元素
@Override
public Object dlque() {
Node s = front.getNext();
Object obj =s.getData();
front.setNext(s.getNext());
return obj;
}
//获取队首元素,无需删除
@Override
public Object getf() {

return front.getNext().getData();
}
//-----------------------------测试链队--------------------------
public static void main(String[] args) {
//创建一个链队
LinkedQue que = new LinkedQue();
//三个元素开始入队
que.enque(1);
que.enque(2);
que.enque(3);
System.out.println("队列元素大小"+que.length());
//获取队首元素
Object obj=que.getf();
System.out.println("队首元素:"+obj);
//出队一个元素
que.dlque();
//当前的队头元素
System.out.println("出队一个元素后的队首元素:"+que.getf());

}



}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值