队列java实现之线性存储源码
2013-04-06 21:40
323 查看
class Queue<T>{
private int size = 0;
private int length;
private final int default_length = 20;
private Object[] o;
public Queue(){
length = default_length;
o = new Object[length];
}
public Queue(T data,int init_length){
length = init_length;
o = new Object[length];
o[size] = data;
size++;
}
public int getSize(){
return size;
}
//进队列
public void add(T data){
if(size+1>length){
length *=2;
Object[] temp = new Object[length];
int i=0;
while(i<size){
temp[i] = o[i];
o[i--]=null;
}
o = temp;
}
o[size++] = data;
}
//出队列
public T remove(){
if(isEmpty()){
throw new NullPointerException("空队列");
}
@SuppressWarnings("unchecked")
T oldvalue = (T) o[0];
int i = 0;
while(i<size-1){
o[i] = o[i+1];
i++;
}
o[i] = null;
size--;
return oldvalue;
}
public void clear(){
while(size-->0){
o[size] = null;
}
}
public boolean isEmpty(){
if(size>0){
return false;
}else
return true;
}
@Override
public String toString() {
if(size == 0){
return "[]";
}else{
StringBuffer sb = new StringBuffer("[");
int i=0;
while(i<size){
sb.append(o[i++]+",");
}
return sb.delete(sb.length()-1, sb.length()).toString()+"]";
}
}
}
private int size = 0;
private int length;
private final int default_length = 20;
private Object[] o;
public Queue(){
length = default_length;
o = new Object[length];
}
public Queue(T data,int init_length){
length = init_length;
o = new Object[length];
o[size] = data;
size++;
}
public int getSize(){
return size;
}
//进队列
public void add(T data){
if(size+1>length){
length *=2;
Object[] temp = new Object[length];
int i=0;
while(i<size){
temp[i] = o[i];
o[i--]=null;
}
o = temp;
}
o[size++] = data;
}
//出队列
public T remove(){
if(isEmpty()){
throw new NullPointerException("空队列");
}
@SuppressWarnings("unchecked")
T oldvalue = (T) o[0];
int i = 0;
while(i<size-1){
o[i] = o[i+1];
i++;
}
o[i] = null;
size--;
return oldvalue;
}
public void clear(){
while(size-->0){
o[size] = null;
}
}
public boolean isEmpty(){
if(size>0){
return false;
}else
return true;
}
@Override
public String toString() {
if(size == 0){
return "[]";
}else{
StringBuffer sb = new StringBuffer("[");
int i=0;
while(i<size){
sb.append(o[i++]+",");
}
return sb.delete(sb.length()-1, sb.length()).toString()+"]";
}
}
}
相关文章推荐
- 栈java实现之线性存储源码
- 队列的线性存储和链式存储实现
- Java使用顺序存储实现队列
- 【Java数据结构学习笔记之一】线性表的存储结构及其代码实现
- 线性表的Java实现--链式存储(双向链表)
- 队列- 链式存储-Java实现
- JDK源码分析之主要阻塞队列实现类ArrayBlockingQueue -- java消息队列/java并发编程/阻塞队列
- 线性表 及Java实现 顺序表、链表、栈、队列
- 队列的不同存储结构及JAVA实现
- 线性表的顺序存储之java实现
- java线性表的存储结构及其代码实现
- java实现线性表的顺序存储操作
- 线性表的链式存储结构之单链表结点类的实现_Java
- 数据结构与算法 ---- 线性表 及Java实现 顺序表、链表、栈、队列
- 线性表的链式存储结构之单链表类的实现之补充_Java
- 数据结构队列的java实现,包括线性和链式两种方式
- 线性表的顺序存储及JAVA实现
- 队列(源码实现Java)
- 数据结构:线性表的链式存储(单向链表)--Java实现
- 线性表的链接存储结构及JAVA实现