兩個棧實現佇列

2021-08-19 19:37:23 字數 2022 閱讀 8488

**1

/**倆個棧實現乙個佇列**/

class twolink

public

testlink1(int size)

//} //判斷是否為空

public

boolean

isempt()

return

false;

}//入隊

public

void

push(int val)

//出隊

public

void

pop()

for(int i=0;i1]=t1.elem[i];//把t1.elem的元素倒序給t2.elem

top1=this.top;

}top1--;//t2進行出棧

for(int j=0;j1]=t2.elem[j];//再把t2.elem的元素倒序給t1.elem這樣就把t1.elem的第乙個元素刪除了

this.top=top1;}}

public

void

show()

}public

void

gettop()

}public

class

test2

t1.show();

system.out.println("====");

t1.pop();

t1.show();

system.out.println("==出隊後==");

system.out.println(t1.isempt());

t1.gettop();

// todo auto-generated method stub

}}

執行結果

0 1

2 3 4 5

====

1 2

3 4

5 ==出隊後==

false

隊內第乙個元素為1

**2

class stack

public

stack(int size)

//棧是否為滿

public boolean isfull()

return

false;

}//入棧

public boolean push(int val)

this.elem[top]=val;

this.top=top+1;

return

true;

}//是否為空

public boolean isempty()

return

false;

} //出棧

public

intpop()

int num=elem[top-1];

this.top--;

return num;

//return this.elem[--top];

//返回當前棧頂減一位置的的元素,並且棧頂往下減一。

}//得到棧頂的元素

public

intgettop()

return

this.elem[this.top-1];//不能改變top的值,不能進行--top

}public

void

show()

}}/*

* 倆個棧實現乙個佇列

* */

public

class test1

public

static

intpop(stack s1,stack s2)

num=s2.pop();//讓s2出棧,並把這個值賦給num

while(!s2.isempty())

return num;//返回num

}public

static

void

main(string args)

}

兩個棧實現佇列 兩個佇列實現棧

1.兩個棧實現佇列 大致思路 入佇列時,將元素入棧s1,出佇列時,將s2中的元素出棧即可,如果s2為空,那麼將s1中 s1.size 1 個元素出棧,加入到s2中,然後將s1中最後乙個元素出棧,即完成了出佇列的操作 include using namespace std include includ...

兩個棧實現佇列,兩個佇列實現棧

include include include using namespace std 使用兩個棧實現佇列,實現了push,pop,front操作 其中棧s2是輔助棧,push直接在s1中插入 pop從s2中出棧,如果s2是空的,將s1倒進s2,然後再出棧,這樣減少了倒棧次數,比較高效。front就...

兩個棧實現佇列 兩個佇列實現棧

一 題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。二 1 自己 基本思路 乙個棧用於壓縮,乙個專門用於彈出。因為棧是先進後出,所有的元素入棧再出棧,再入棧就可以將順序調整過來。但是沒有想到優化。class solution int pop int tem...