package com.cjm.queue;

/**
* 数据结构与算法Java实现 队列
*
* @author 小明
*
*/
public class Myqueue {
private Node head;// 队列的队头
private Node rear;// 对列的尾
private int size;//队列长度
public Myqueue() {//初始化
head=rear=null;
size=0;
}
/*
* 插入函数
*/
public void add(Node node) {
if(size==0) {//当队列为空时
head=rear=node;//队头和队尾均为插入元素
size++;//长度加一
}else {//当长度不为0时
rear.setNext(node);//改变队尾的后继
rear=node;//改变队尾
size++;//长度加一
}
}
public void out() throws IndexException {
if(size==0) {//对列为空时
throw new IndexException("队列中为空,无法出队列");
}else {//队列不为空
head=head.getNext();//修改队头
size--;//长度减一
}
}
@Override
public String toString() {
String str=" ";
Node temp=head;
while(temp!=null) {
str+=temp.getElement()+" ";//拼接
temp=temp.getNext();//后移
}
str="["+str+" ]";
return str;
}
public static void main(String[] args) throws IndexException {
Myqueue myqueue=new Myqueue();
myqueue.add(new Node(1));
myqueue.add(new Node(2));
myqueue.add(new Node(3));
myqueue.add(new Node(4));
myqueue.add(new Node(5));
myqueue.add(new Node(6));
myqueue.add(new Node(7));
myqueue.add(new Node(8));
myqueue.add(new Node(9));
myqueue.add(new Node(10));
myqueue.out();
myqueue.out();
System.out.println(myqueue);
}
} class Node<T> {
private T element;// 数据域
private Node next;// 后继 public Node(T t) {
element = t;
next = null;
} public Node getNext() {
return next;
} public T getElement() {
return element;
} public void setNext(Node next) {
this.next = next;
}
}
/*
* 索引异常类
*/
class IndexException extends Exception {
public IndexException() { } public IndexException(String s) {
super(s);
}
}

  结果如下:

数据结构与算法Java描述 队列的更多相关文章

  1. 数据结构与算法 java描述 第一章 算法及其复杂度

    目录 数据结构与算法 java描述 笔记 第一章 算法及其复杂度 算法的定义 算法性能的分析与评价 问题规模.运行时间及时间复杂度 渐进复杂度 大 O 记号 大Ω记号 Θ记号 空间复杂度 算法复杂度及 ...

  2. 数据结构与算法 --- js描述队列

    js描述队列 队列的特性是只能在队尾插入元素,在队首删除元素,先进先出: 队列被用在很多地方,比如提交操作系统执行的一系列进程,打印任务池,模拟现实中的排队: //队列类 function Queue ...

  3. 数据结构与算法JavaScript描述——队列

    注:澄清一个bug: /** * 删除队首的元素: */ function dequeue(){ return this.dataStore.shift(); } 应该有return:   队列是一种 ...

  4. 《数据结构与算法JavaScript描述》

    <数据结构与算法JavaScript描述> 基本信息 作者: (美)Michael McMillan 译者: 王群锋 杜欢 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9 ...

  5. 翻阅《数据结构与算法javascript描述》--数组篇

    导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性 ...

  6. 数据结构与算法javascript描述

    <数据结构与算法javascript描述>--数组篇 导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScri ...

  7. 数据结构与算法C++描述学习笔记1、辗转相除——欧几里得算法

    前面学了一个星期的C++,以前阅读C++代码有些困难,现在好一些了.做了一些NOI的题目,这也是一个长期的目标中的一环.做到动态规划的相关题目时发现很多问题思考不通透,所以开始系统学习.学习的第一本是 ...

  8. 列表的实现-----数据结构与算法JavaScript描述 第三章

    实现一个列表 script var booklist = new List(); booklist.append('jsbook'); booklist.append('cssbook'); book ...

  9. 《数据结构与算法JavaScript描述》中的一处错误

    最近在看<数据结构与算法JavaScript描述>这本书,看到选择排序这部分时,发现一个比较大的错误. 原书的选择排序算法是这样的: function selectionSort() { ...

随机推荐

  1. 理解javascript封装

    封装可以被定义为对对象的内部数据表现形式和实现细节进行隐藏.通过封装可以强制实施信息隐藏. 在JavaScript中,并没有显示的声明私有成员的关键字等.所以要想实现封装/信息隐藏就需要从另外的思路出 ...

  2. Nginx基本

    静态HTTP服务器 首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML.图片)通过HTTP协议展现给客户端.配置: server { listen ; # 端口号 locati ...

  3. ftp主动模式与被动模式交互过程分析

    1.相关介绍 1.1主动模式和被动模式 主动模式:服务端通过指定的数据传输端口(默认20),主动连接客户端提交的端口,向客户端发送数据. 被动模式:服务端采用客户端建议使用被动模式,开启数据传输端口的 ...

  4. dir()函数

  5. 动态规划-最长单调递增子序列(dp)

    最长单调递增子序列 解题思想:动态规划 1.解法1(n2) 状态:d[i] = 长度为i+1的递增子序列的长度 状态转移方程:dp[i] = max(dp[j]+1, dp[i]); 分析:最开始把d ...

  6. angular 我看过的技术书籍

    13年我在悠唐网络做前端开发时,当时仿豌豆荚一个sdk 发布应用界面的时候,看到代码用到奇怪的ng-,当时查了下是用angular,从那时开始慢慢接触angular,之后进入逸橙官网组使用angula ...

  7. UVa 11039 - Building designing 贪心,水题 难度: 0

    题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...

  8. windows添加PDF虚拟打印机

    添加PDF虚拟打印机(果真姜还是老的辣,我摸索了两天没结果的事情,大佬轻轻松松两分钟搞定...) 这种PDF虚拟打印机的功能是将需要被打印的内容写到当前系统的指定目录下的指定文件中.整个过程都不需要连 ...

  9. react全家桶-服务端与客户端配置

    全家桶内装有: react - github react-router - github redux - github react-redux - github react-router-redux ...

  10. set循环遍历删除特定元素

    使用Iterator迭代器 public class Demo { public static void main(String[] args) { Set<Object> obj = n ...