public?interface?MyStackT?{
站在用戶的角度思考問題,與客戶深入溝通,找到饒平網站設計與饒平網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:成都做網站、成都網站建設、成都外貿網站建設、企業官網、英文網站、手機端網站、網站推廣、國際域名空間、雅安服務器托管、企業郵箱。業務覆蓋饒平地區。
/**
?*?判斷棧是否為空
?*/
boolean?isEmpty();
/**
?*?清空棧
?*/
void?clear();
/**
?*?棧的長度
?*/
int?length();
/**
?*?數據入棧
?*/
boolean?push(T?data);
/**
?*?數據出棧
?*/
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()?{
//?將數組中的數據置為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)?{
//?判斷是否需要進行數組擴容
if?(size?=?objs.length)?{
resize();
}
objs[size++]?=?data;
return?true;
}
/**
?*?數組擴容
?*/
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();
}
}
//棧的鏈表實現
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;
}
/**
?*?將數據封裝成結點
?*/
private?final?class?Node?{
private?Node?pre;
private?T?data;
}
}
import java.util.Stack;
public class Translate {
//程序入口
public static void main(String[]args){
int n = Translate.translate(3467,8);
System.out.println("結果是:"+n);
}
public static int translate(int number, int base_num) {
//使用棧
StackIntegerstack = new StackInteger();
while(number0){
//壓棧
stack.push(number % base_num);
number /= base_num;
}
int n = stack.size();
int val=0;
//依次出棧并合成結果(用我們熟悉的十進制表示,所以乘以10)
for(int i=0;in;i++){
val=val*10+stack.pop();
}
return val;
}
}
隊列(Queue):是限定只能在表的一端進行插入和在另一端進行刪除操作的線性表;
棧(Stack):是限定只能在表的一端進行插入和刪除操作的線性表。
區別如下:
一、規則不同
1. 隊列:先進先出(First In First Out)FIFO
2. 棧:先進后出(First In Last Out )FILO
二、對插入和刪除操作的限定不同
1. 隊列:只能在表的一端進行插入,并在表的另一端進行刪除;
2. 棧:只能在表的一端插入和刪除。
三、遍歷數據速度不同
1.
隊列:基于地址指針進行遍歷,而且可以從頭部或者尾部進行遍歷,但不能同時遍歷,無需開辟空間,因為在遍歷的過程中不影響數據結構,所以遍歷速度要快;
2.
棧:只能從頂部取數據,也就是說最先進入棧底的,需要遍歷整個棧才能取出來,而且在遍歷數據的同時需要為數據開辟臨時空間,保持數據在遍歷前的一致性。
新聞名稱:棧和隊列代碼java 棧和隊列的定義及基本操作
鏈接URL:http://m.kartarina.com/article36/hjocsg.html
成都網站建設公司_創新互聯,為您提供響應式網站、標簽優化、建站公司、網站導航、搜索引擎優化、
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯