/**
* Queue.java
* 线性表之队列
* 队列有如下特点:
* 先进先出
* 即,从尾部添加(push)新数据
* 从头部取出(pop)数据
*/
/**
* 队列(Queue)也是一种运算受限的线性表。
* 它只允许在表的一端进行插入,而在另一端进行删除。
* 允许删除的一端称为队头(front),允许插入的一端称为队尾(rear)。
*/
package line;
/**
* @author sunxboy
* 9:59:59 AM May 22, 2007
*/
public class Queue {
int data[];
int maxSize;
int size;
int front; //允许删除的一端
int rear; //允许插入的一端
public Queue(int maxSize) {
this.maxSize = maxSize;
this.data = new int[maxSize];
size= 0;
rear = 0;
front =0;
}
public boolean isEmpty() {
return size==0;
}
public boolean isFull() {
return size==maxSize;
}
/**
* 循环队列
* @param data
* @return
*/
public boolean push(int data)throws Exception {
if(isFull())
throw new Exception("队列已满!");
size++;
this.data[rear]= data;
// if(rear+1==maxSize)
// rear=0;
// else
// rear++;
rear=(rear+1)%maxSize;
return true;
}
public int pop() throws Exception{
int temp;
if(isEmpty())
throw new Exception("队列是空的.");
temp = this.data[this.front];
this.size--;
// if(front+1==maxSize)
// front=0;
// else
// front++;
front=(front+1)%maxSize;
return temp;
}
public static void main(String[] args) throws Exception{
Queue queue=new Queue(10);
queue.push(1);
queue.pop();
// queue.pop();
queue.push(2);
queue.push(3);
queue.push(4);
queue.push(5);
queue.push(6);
queue.push(7);
queue.push(8);
queue.push(9);
queue.push(10);
// queue.push(11);
while(!queue.isEmpty())
{
System.out.println(queue.pop());
}
}
}
分享到:
相关推荐
c++ 数据结构 教程 线性表 栈 队列 串 的实现,共初学者学习参考
线性表(数组),栈(数组),队列(链表)操作实现。
用java实现了各种线性表(表,队列,栈等),包括顺序数组实现和链表实现
线性表、堆栈、队列实现源码,C++实现,如果有问题请大家给我留言http://blog.csdn.net/tiandixuanwuliang
1、了解线性表的定义,理解线性表的存储结构以及相关算法的实现; 2、了解栈的定义,理解和掌握栈的存储结构以及相关算法; 3、理解队列的定义,了解队列的存储结构和算法; 4、理解串的概念和模式匹配算法。
顺序存储的线性表和运算 链式存储的线性表和运算 顺序栈的实现和运算 链栈的实现和运算 顺序队列的实现和运算 链式队列的实现和运算 循环队列的实现和运算
用模板类实现的线性表,栈与队列的数据存储,读出等相关操作
利用C++实现了链表、栈、队列三种数据结构的类封装,并提供常用操作。通过自己实现线性表结构,可以对其原理有更深理解。
数据结构与算法----线性表及Java实现顺序表、链表、栈、队列 定义线性表节点的结构.pdf
包含JWArray和JWList,分别包含顺序结构及链式结构的线性表、栈和队列操作,函数使用方便简单,可以作为简单的C语言线性表、栈和队列操作库。
T串在S串中出现的位置与次数,建立一个非递减表,插入一个元素,建立一个非递减表,删相同元素,交换元素,链队列与循环队列的入队和出队,树,用算符优先法求表达式值.
上传内容为栈和线性表的基本实现,如有需要,可以在接口不变的情况下改为队列、链表、数组实现。
数据结构 队列的模板类 用线性表实现 c++
NULL 博文链接:https://touch-2011.iteye.com/blog/1048856
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队...
利用C++实现以下经典数据结构与算法:线性表(顺序表、链表、静态链表、三元组)、栈(双栈、共享栈)、队列(任务调度、循环队列、双向队列、链队列)、数组(特殊矩阵、稀疏矩阵压缩)、串(朴素模式匹配、KMP算法...
实习一 复数ADT及其实现实习二 线性表实习三 栈和队列 实习四 串实习五 数组实习六 树与二叉树 实习七 图实习八 查找实习九 排序 全部C语言代码
(1) 熟练掌握队列的两种存储方式。 (2) 掌握队列的基本操作及应用。 (3) 利用链式存储线性表和队列实现银行业务模拟程序。
各种数据结构的实现代码参考(包括线性表,栈和队列,图,串,排序,数和二叉树,查找)
本文实例讲述了python队列原理及实现方法。分享给大家供大家参考,具体如下: 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 队列是一种先进先出的(First In First Out)的线性表,...