数据结构(六)---队列的链式存储的实现---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());
}
}
数据结构(六)---队列的链式存储的实现---java版相关推荐
- 数据结构 3-2-1 队列的链式存储实现
一.概念 队列也是一种受限的线性表,只允许一端插入另一段输出,就像其名字一样,队列具有先入先出的特点,这是由于其受限的特点所决定的.用链式结构实现队列,称为链队列,实际上是一个带有队头指针和队尾指针的 ...
- 算法与数据结构之队列的链式存储
#include<stdio.h> #include<malloc.h> #include<windows.h> typedef int elemtype; typ ...
- 数据结构(五)---栈的链式存储的实现---java版
------------------------------------------------链栈的节点设置--------------------------------------------- ...
- 队列的链式存储结构及其实现_了解队列数据结构及其实现
队列的链式存储结构及其实现 A queue is a collection of items whereby its operations work in a FIFO - First In Firs ...
- 数据结构之顺序存储与链式存储
数据结构之顺序存储与链式存储 定义 特点 前驱和后继 存储结构 顺序存储结构 定义 特点 优缺点 基本操作 链式存储结构 1.单链表 节点 基本操作 2.静态链表 3.双向链表 4.循环链表 顺序存储 ...
- 队列的链式存储结构及实现
队列的链式存储结构,其实就是线性表的单链表,只不过它只是尾进头出而已,我们把它简称为链队列.为了操作上的方便,我们将队头指针指向链队列的头结点,而队尾指针指向终端节点.如果 空队列时,front和re ...
- Python 数据结构 之 串 的链式存储结构
本文所采用的数据结构模板为 <数据结构教程>C语言版,李春葆.尹为民等著. 改篇所涉及到的是 串 的链式存储结构. 用Python仿照C语言来实现. 文章转载请注明: Python 数据 ...
- 队列的链式存储实现(简单的入队和出队操作)
/************************************************************************ * * 文件名:2.2.5.cpp * * 文件描述 ...
- 队列的链式存储结构(链队)
链队 1.队列的链式存储结构 typedef struct QNode{ //结点结构QElemType data; //结点数据域struct QNode *next; //结点指针域 }QNode ...
最新文章
- 游标对于分页存储过程
- Vue的百度地图插件尝试
- 《cloud+》如果百度云飘走了你该怎么办?
- linux c 编译警告 warning: this decimal constant is unsigned only in ISO C90
- 全局变量引起的BUG
- 转:如何进行软件架构设计?
- 常用基础参数SurvivorRatio讲解 || NewRatio讲解 || MaxTenuringThreshold讲解
- CITRIX 5.0,XML服务异常引出事件ID 31003和30016错误
- c语言某一行不被优化,C语言优化小技巧
- ${oid?c}的使用
- 宝塔linux忘记密码,宝塔忘记登录入口了怎么解决 宝塔面板密码忘记了怎么办
- Linux下openSSL安装并颁发证书
- 3.2_栈_链式存储结构(链表形式)
- IE浏览器“SEC7113: CSS 因 Mime 类型不匹配而被忽略”问题的解决方法
- Js中的window.parent ,window.top,window.self 代表的对象
- 初识java atomic
- RTD\RTK\PPK\PPP\DGPS\地基增强系统\星基增强系统
- 三十九、如何单独发布jar包
- 草图vr3.6许可证服务器安装失败,VRay3.6无法获得许可-200
- ailx10的hacknet攻略005
热门文章
- Promise第二篇:你需要记着的API
- Leecode 9. 回文数
- json java对象 简书_Java 对象的 Json 化与反 Json 化
- Kubernetes——基本概念与理论
- Mysql数据库(三)——mysql数据库高级操作
- mysql文档批处理去重_数据导入经验总结
- dede问答模块 那个php文件相对重要,DEDE5.7 问答模板的修改技巧
- php 目录管理,[PHP文件管理器]①--遍历目录
- activemq 控制台怎么看生产信息_Jmeter中间件处理-ActiveMQ
- mysql触发器行锁_MySQL 之 视图、触发器、存储过程、函数、事物与数据库锁