自己寫了個簡單的實現(xiàn)
創(chuàng)新互聯(lián)公司提供高防服務器、云服務器、香港服務器、成都移動機房等
class QueueE{
private Object[] integerQueue;//用來當隊列
public int tail;//隊尾
public int size;//隊的長度,也可以設置一個默認值,溢出時從新申請
public Queue(int size){
integerQueue=new Object[size];
this.size=size;
tail=-1;
}
/**
* 將元素插入隊列
* @return 如果該元素已添加到此隊列,則返回 true;否則返回 false
*/
public boolean offer(E e){
if(tail size-1){
tail++;
this.integerQueue[tail]=e;
return true;
}else{
return false;
}
}
/**
* 獲取并移除此隊列的頭,如果此隊列為空,則返回 null。
*/
public E poll(){
Object tmp;
if(tail=0){
tmp=this.integerQueue[tail];
tail--;
return (E)tmp;
}else{
return null;
}
}
}
使用java.util包中的Stack類創(chuàng)建一個棧對象
public Object push(Object data);輸入數(shù)據(jù),實現(xiàn)壓棧
public Object pop();輸出數(shù)據(jù),實現(xiàn)彈棧
public boolean empty()判空
public Object peek();查看棧頂元素
可以去查查API嘛
我也是學java的,大家一起進步。
public?interface?MyStackT?{
/**
?*?判斷棧是否為空
?*/
boolean?isEmpty();
/**
?*?清空棧
?*/
void?clear();
/**
?*?棧的長度
?*/
int?length();
/**
?*?數(shù)據(jù)入棧
?*/
boolean?push(T?data);
/**
?*?數(shù)據(jù)出棧
?*/
T?pop();
}
public?class?MyArrayStackT?implements?MyStackT?{
private?Object[]?objs?=?new?Object[16];
private?int?size?=?0;
@Override
public?boolean?isEmpty()?{
return?size?==?0;
}
@Override
public?void?clear()?{
//?將數(shù)組中的數(shù)據(jù)置為null,?方便GC進行回收
for?(int?i?=?0;?i??size;?i++)?{
objs[size]?=?null;
}
size?=?0;
}
@Override
public?int?length()?{
return?size;
}
@Override
public?boolean?push(T?data)?{
//?判斷是否需要進行數(shù)組擴容
if?(size?=?objs.length)?{
resize();
}
objs[size++]?=?data;
return?true;
}
/**
?*?數(shù)組擴容
?*/
private?void?resize()?{
Object[]?temp?=?new?Object[objs.length?*?3?/?2?+?1];
for?(int?i?=?0;?i??size;?i++)?{
temp[i]?=?objs[i];
objs[i]?=?null;
}
objs?=?temp;
}
@SuppressWarnings("unchecked")
@Override
public?T?pop()?{
if?(size?==?0)?{
return?null;
}
return?(T)?objs[--size];
}
@Override
public?String?toString()?{
StringBuilder?sb?=?new?StringBuilder();
sb.append("MyArrayStack:?[");
for?(int?i?=?0;?i??size;?i++)?{
sb.append(objs[i].toString());
if?(i?!=?size?-?1)?{
sb.append(",?");
}
}
sb.append("]");
return?sb.toString();
}
}
//棧的鏈表實現(xiàn)
public?class?MyLinkedStackT?implements?MyStackT?{
/**
?*?棧頂指針
?*/
private?Node?top;
/**
?*?棧的長度
?*/
private?int?size;
public?MyLinkedStack()?{
top?=?null;
size?=?0;
}
@Override
public?boolean?isEmpty()?{
return?size?==?0;
}
@Override
public?void?clear()?{
top?=?null;
size?=?0;
}
@Override
public?int?length()?{
return?size;
}
@Override
public?boolean?push(T?data)?{
Node?node?=?new?Node();
node.data?=?data;
node.pre?=?top;
//?改變棧頂指針
top?=?node;
size++;
return?true;
}
@Override
public?T?pop()?{
if?(top?!=?null)?{
Node?node?=?top;
//?改變棧頂指針
top?=?top.pre;
size--;
return?node.data;
}
return?null;
}
/**
?*?將數(shù)據(jù)封裝成結點
?*/
private?final?class?Node?{
private?Node?pre;
private?T?data;
}
}