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

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());

}

}

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

  1. 数据结构 3-2-1 队列的链式存储实现

    一.概念 队列也是一种受限的线性表,只允许一端插入另一段输出,就像其名字一样,队列具有先入先出的特点,这是由于其受限的特点所决定的.用链式结构实现队列,称为链队列,实际上是一个带有队头指针和队尾指针的 ...

  2. 算法与数据结构之队列的链式存储

    #include<stdio.h> #include<malloc.h> #include<windows.h> typedef int elemtype; typ ...

  3. 数据结构(五)---栈的链式存储的实现---java版

    ------------------------------------------------链栈的节点设置--------------------------------------------- ...

  4. 队列的链式存储结构及其实现_了解队列数据结构及其实现

    队列的链式存储结构及其实现 A queue is a collection of items whereby its operations work in a FIFO - First In Firs ...

  5. 数据结构之顺序存储与链式存储

    数据结构之顺序存储与链式存储 定义 特点 前驱和后继 存储结构 顺序存储结构 定义 特点 优缺点 基本操作 链式存储结构 1.单链表 节点 基本操作 2.静态链表 3.双向链表 4.循环链表 顺序存储 ...

  6. 队列的链式存储结构及实现

    队列的链式存储结构,其实就是线性表的单链表,只不过它只是尾进头出而已,我们把它简称为链队列.为了操作上的方便,我们将队头指针指向链队列的头结点,而队尾指针指向终端节点.如果 空队列时,front和re ...

  7. Python 数据结构 之 串 的链式存储结构

    本文所采用的数据结构模板为 <数据结构教程>C语言版,李春葆.尹为民等著. 改篇所涉及到的是 串 的链式存储结构. 用Python仿照C语言来实现. 文章转载请注明:  Python 数据 ...

  8. 队列的链式存储实现(简单的入队和出队操作)

    /************************************************************************ * * 文件名:2.2.5.cpp * * 文件描述 ...

  9. 队列的链式存储结构(链队)

    链队 1.队列的链式存储结构 typedef struct QNode{ //结点结构QElemType data; //结点数据域struct QNode *next; //结点指针域 }QNode ...

最新文章

  1. 游标对于分页存储过程
  2. Vue的百度地图插件尝试
  3. 《cloud+》如果百度云飘走了你该怎么办?
  4. linux c 编译警告 warning: this decimal constant is unsigned only in ISO C90
  5. 全局变量引起的BUG
  6. 转:如何进行软件架构设计?
  7. 常用基础参数SurvivorRatio讲解 || NewRatio讲解 || MaxTenuringThreshold讲解
  8. CITRIX 5.0,XML服务异常引出事件ID 31003和30016错误
  9. c语言某一行不被优化,C语言优化小技巧
  10. ${oid?c}的使用
  11. 宝塔linux忘记密码,宝塔忘记登录入口了怎么解决 宝塔面板密码忘记了怎么办
  12. Linux下openSSL安装并颁发证书
  13. 3.2_栈_链式存储结构(链表形式)
  14. IE浏览器“SEC7113: CSS 因 Mime 类型不匹配而被忽略”问题的解决方法
  15. Js中的window.parent ,window.top,window.self 代表的对象
  16. 初识java atomic
  17. RTD\RTK\PPK\PPP\DGPS\地基增强系统\星基增强系统
  18. 三十九、如何单独发布jar包
  19. 草图vr3.6许可证服务器安装失败,VRay3.6无法获得许可-200
  20. ailx10的hacknet攻略005

热门文章

  1. Promise第二篇:你需要记着的API
  2. Leecode 9. 回文数
  3. json java对象 简书_Java 对象的 Json 化与反 Json 化
  4. Kubernetes——基本概念与理论
  5. Mysql数据库(三)——mysql数据库高级操作
  6. mysql文档批处理去重_数据导入经验总结
  7. dede问答模块 那个php文件相对重要,DEDE5.7 问答模板的修改技巧
  8. php 目录管理,[PHP文件管理器]①--遍历目录
  9. activemq 控制台怎么看生产信息_Jmeter中间件处理-ActiveMQ
  10. mysql触发器行锁_MySQL 之 视图、触发器、存储过程、函数、事物与数据库锁