public?interface?MyStackT?{

站在用戶的角度思考問題,與客戶深入溝通,找到饒平網(wǎng)站設(shè)計(jì)與饒平網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋饒平地區(qū)。
/**
?*?判斷棧是否為空
?*/
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進(jìn)行回收
for?(int?i?=?0;?i??size;?i++)?{
objs[size]?=?null;
}
size?=?0;
}
@Override
public?int?length()?{
return?size;
}
@Override
public?boolean?push(T?data)?{
//?判斷是否需要進(jìn)行數(shù)組擴(kuò)容
if?(size?=?objs.length)?{
resize();
}
objs[size++]?=?data;
return?true;
}
/**
?*?數(shù)組擴(kuò)容
?*/
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();
}
}
//棧的鏈表實(shí)現(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ù)封裝成結(jié)點(diǎn)
?*/
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("結(jié)果是:"+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;
//依次出棧并合成結(jié)果(用我們熟悉的十進(jìn)制表示,所以乘以10)
for(int i=0;in;i++){
val=val*10+stack.pop();
}
return val;
}
}
隊(duì)列(Queue):是限定只能在表的一端進(jìn)行插入和在另一端進(jìn)行刪除操作的線性表;
棧(Stack):是限定只能在表的一端進(jìn)行插入和刪除操作的線性表。
區(qū)別如下:
一、規(guī)則不同
1. 隊(duì)列:先進(jìn)先出(First In First Out)FIFO
2. 棧:先進(jìn)后出(First In Last Out )FILO
二、對插入和刪除操作的限定不同
1. 隊(duì)列:只能在表的一端進(jìn)行插入,并在表的另一端進(jìn)行刪除;
2. 棧:只能在表的一端插入和刪除。
三、遍歷數(shù)據(jù)速度不同
1.
隊(duì)列:基于地址指針進(jìn)行遍歷,而且可以從頭部或者尾部進(jìn)行遍歷,但不能同時(shí)遍歷,無需開辟空間,因?yàn)樵诒闅v的過程中不影響數(shù)據(jù)結(jié)構(gòu),所以遍歷速度要快;
2.
棧:只能從頂部取數(shù)據(jù),也就是說最先進(jìn)入棧底的,需要遍歷整個(gè)棧才能取出來,而且在遍歷數(shù)據(jù)的同時(shí)需要為數(shù)據(jù)開辟臨時(shí)空間,保持?jǐn)?shù)據(jù)在遍歷前的一致性。
新聞名稱:棧和隊(duì)列代碼java 棧和隊(duì)列的定義及基本操作
鏈接URL:http://chinadenli.net/article36/hjocsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、標(biāo)簽優(yōu)化、建站公司、網(wǎng)站導(dǎo)航、搜索引擎優(yōu)化、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)