新聞中心
用兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列,且用JAVA程序語(yǔ)言編寫(xiě),求思路和結(jié)果
隊(duì)列是先進(jìn)先出~ 棧是先進(jìn)后出 比如 stack1 和 stack2 來(lái)實(shí)現(xiàn)queue
創(chuàng)新互聯(lián)主要從事做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)洱源,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):18982081108
對(duì)于queue來(lái)說(shuō) 進(jìn)入的數(shù)據(jù)順序比如是 1,2,3,4,5 出來(lái)順序也是 1,2,3,4,5
用stack實(shí)現(xiàn)的話可以 數(shù)據(jù)進(jìn)去的時(shí)候用stack1來(lái)存 存完后出來(lái)的順序是 5,4,3,2,1 這跟queue的順序不一樣,所以需要stack2 ,將stack1的數(shù)據(jù)一個(gè)個(gè)輸出存到stack2中,這樣stack2中的數(shù)據(jù)也就是1,2,3,4,5了,跟queue一樣 過(guò)程中要注意你現(xiàn)在數(shù)據(jù)時(shí)用stack1來(lái)存還是stack2來(lái)存。
怎樣用2個(gè)棧實(shí)現(xiàn)隊(duì)列(java)
隊(duì)列的要求是先進(jìn)先出,用兩個(gè)棧可以很容易的實(shí)現(xiàn)
假設(shè)其中一個(gè)棧為s1, 另一個(gè)為s2
1. 入隊(duì):將元素放入s1中,s2始終為空
2. 出隊(duì):
1). 首先將s1中的元素全部導(dǎo)入s2的棧中,清空s1,
2). 然后再將s2棧頂元素出棧,保留下來(lái),
3). 將s2剩余元素導(dǎo)入s1中,恢復(fù)數(shù)據(jù)原有順序,就可以了
至于代碼,自己想想就能寫(xiě)出來(lái)
怎么用java代碼實(shí)現(xiàn)棧內(nèi)存?
使用java.util包中的Stack類(lèi)創(chuàng)建一個(gè)棧對(duì)象
public Object push(Object data);輸入數(shù)據(jù),實(shí)現(xiàn)壓棧
public Object pop();輸出數(shù)據(jù),實(shí)現(xiàn)彈棧
public boolean empty()判空
public Object peek();查看棧頂元素
可以去查查API嘛
我也是學(xué)java的,大家一起進(jìn)步。
棧與隊(duì)列的實(shí)現(xiàn)(java)
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;
}
}
跪求用JAVA語(yǔ)言實(shí)現(xiàn)一個(gè)棧和一個(gè)隊(duì)列,數(shù)據(jù)元素為double型。。。具體在問(wèn)題補(bǔ)充里
public?interface?MyStackT?{
/**
?*?判斷棧是否為空
?*/
boolean?isEmpty();
/**
?*?清空棧
?*/
void?clear();
/**
?*?棧的長(zhǎng)度
?*/
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;
/**
?*?棧的長(zhǎng)度
?*/
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;
}
}
文章題目:java代碼實(shí)現(xiàn)棧和隊(duì)列 Java棧和隊(duì)列
文章位置:http://fisionsoft.com.cn/article/hidgde.html