精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

用棧實(shí)現(xiàn)隊(duì)列 & 用隊(duì)列實(shí)現(xiàn)棧

開(kāi)發(fā)
以下是用棧實(shí)現(xiàn)隊(duì)列 & 用隊(duì)列實(shí)現(xiàn)棧的思路,主要是用來(lái)考察棧和隊(duì)列的特性。

棧和隊(duì)列

棧和隊(duì)列都是一種數(shù)據(jù)結(jié)構(gòu),它們的作用都是存儲(chǔ)。

每種數(shù)據(jù)結(jié)構(gòu)都有著其對(duì)應(yīng)的特性。隊(duì)列的特性是先進(jìn)先出,而棧的特性是先進(jìn)后出:

圖片

只有滿足了它們的以上特性,一個(gè)數(shù)據(jù)結(jié)構(gòu)才能被稱為棧或者隊(duì)列。

接下來(lái)我們看一下這兩道經(jīng)典的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)題:

用棧實(shí)現(xiàn)隊(duì)列

要用棧實(shí)現(xiàn)隊(duì)列,就得實(shí)現(xiàn)隊(duì)列的以下API:

void push(int x) // 將元素添加到隊(duì)列的尾處
int pop() //刪除隊(duì)列的頭部元素并且返回
int peek() //返回隊(duì)列的頭個(gè)元素
boolean empty() //判斷隊(duì)列是否為空

我們要讓設(shè)計(jì)的隊(duì)列滿足以上API的使用。

隊(duì)列有隊(duì)列頭部和隊(duì)列尾部。所以我們可以用兩個(gè)棧,通過(guò)棧的特性讓它們相互配合從而實(shí)現(xiàn)一個(gè)隊(duì)列:

圖片

    Stack<Integer> stackPush;  //一個(gè)棧用來(lái)負(fù)責(zé)push元素
Stack<Integer> stackPop; //一個(gè)棧用來(lái)負(fù)責(zé)將元素pop掉

//初始化
public MyQueue() {
stackPush = new Stack<Integer>();
stackPop = new Stack<Integer>();
}

push():

push()要做的,就是將一個(gè)元素添加到隊(duì)列的尾處。

所以這里我們可以直接調(diào)用棧的push(),然后把元素打入stachPush這個(gè)棧就好了:

    public void push(int x) {
stackPush.push(x);
}

此時(shí),元素1就在stachPush這個(gè)棧的底部:

圖片

pop():

pop()就是刪除隊(duì)列的頭部元素并且返回。

有了剛才push()的經(jīng)驗(yàn),pop()依然可以按照push()剛才經(jīng)驗(yàn),就是當(dāng)stackPop為空的時(shí)候,按順序把stackPush里面的元素一個(gè)一個(gè)pop()掉,并且返回給stackPop:

圖片

然后再將stackPop()里面的元素pop()返回:

圖片

    public int pop() {
if (stackPop.isEmpty() && stackPush.isEmpty()) {
throw new RuntimeException("Queue is empty.");
} else {
if (stackPop.isEmpty()) {
while (!stackPush.isEmpty()) {
stackPop.push(stackPush.pop());
}
}
}
return stackPop.pop();
}

peek():

peek就是返回隊(duì)列的頭個(gè)元素:

pop()和peek()的區(qū)別是什么呢?就是pop()返回隊(duì)列頭個(gè)元素并且要?jiǎng)h除,但是peek()返回卻不刪除呀。

所以,和pop()的思路一樣,只需要在最后返回的時(shí)候把stackPop.pop()換成stackPop.peek()就完事了。

    public int peek() {
if (stackPush.isEmpty() && stackPop.isEmpty()) {
throw new RuntimeException("Queue is empyt.");
} else {
if (stackPop.isEmpty()) {
while (!stackPush.isEmpty()) {
stackPop.push(stackPush.pop());
}
}
}
return stackPop.peek();
}

empty():

判斷隊(duì)列是否為空,為空就返回true,不為空就返回false。

所以我們也可以直接判斷兩個(gè)棧是否同時(shí)為空。只要同時(shí)為空就返回true,不同時(shí)為空就返回false:

    public boolean empty() {
return stackPop.isEmpty() && stackPush.isEmpty();
}

可以看出,用棧實(shí)現(xiàn)隊(duì)列思路還是比較簡(jiǎn)單的。主要利用的是兩個(gè)棧的相互配合。其核心思路就是一個(gè)數(shù)據(jù)從一個(gè)棧的隊(duì)尾移動(dòng)到另一個(gè)棧,就處于隊(duì)頭的位置。

那么來(lái)說(shuō)一下時(shí)間復(fù)雜度,當(dāng)隊(duì)列為空的時(shí)候pop()和peek()都要通過(guò)while循環(huán)把元素從stackPush移動(dòng)到stackPop,所以復(fù)雜度是O(n)。

用隊(duì)列實(shí)現(xiàn)棧

先看看棧的API:

void push(int x) //將元素壓入棧頂
int pop() //移除并返回棧頂元素
int top() //返回棧頂元素
boolean empty() //如果棧是空的,返回 true ;否則,返回 false 。

和隊(duì)列的API一樣。只不過(guò)這一次我們是要模擬由隊(duì)列實(shí)現(xiàn)棧。

如果說(shuō)用棧實(shí)現(xiàn)隊(duì)列是一種相互配合的方式的話,那么由隊(duì)列實(shí)現(xiàn)棧就不需要了。我們可以使用ArrayDeque()來(lái)實(shí)現(xiàn)隊(duì)列。

    Queue<Integer> queue;
// 使用ArrayDeque作為隊(duì)列
public MyStack() {
queue = new ArrayDeque<>();
}

push(int x):

根據(jù)棧的特性,第一個(gè)入棧的元素會(huì)處于棧底部。所以在使用隊(duì)列模擬棧的時(shí)候,可以先把元素入隊(duì)列,然后再一個(gè)一個(gè)拿出來(lái),最后再入一次隊(duì)列,這樣子原本處于隊(duì)列頭的元素就到了隊(duì)列尾部,相當(dāng)于棧頭:

圖片

    // 入棧時(shí),將新元素x進(jìn)入隊(duì)列后,將新元素x之前的所有元素重新入隊(duì),此時(shí)元素x處于隊(duì)頭
public void push(int x) {
queue.offer(x);
int size = queue.size();
for (int i = 0; i < size - 1; i++) {
queue.offer(queue.poll());
}
}

pop():

由于出棧的操作是和出隊(duì)列的操作是相同的,當(dāng)我們把元素從隊(duì)列頭變到隊(duì)列尾部后,就直接poll()出來(lái)即可:

圖片

    public int pop() {
if (queue.isEmpty()) {
throw new RuntimeException("EMPTY STACK");
}
return queue.poll();
}

top() :

獲取棧頭部元素,就相當(dāng)于隊(duì)列的peek():

    public int top() {
if (queue.isEmpty()) {
throw new RuntimeException("EMPTY STACK");
}
return queue.peek();
}

empty():

返回隊(duì)列是否為空,都是通用的:

    public boolean empty() {
return queue.isEmpty();
}

相比于用棧實(shí)現(xiàn)隊(duì)列,用隊(duì)列實(shí)現(xiàn)棧就非常簡(jiǎn)單。核心思想就是將隊(duì)列的元素先拿出來(lái)再放進(jìn)去從而滿足先進(jìn)后出的特性。

那么它們的時(shí)間復(fù)雜度是多少呢?其它操作都是O(1)。只有pop()操作需要通過(guò)循環(huán)把元素從隊(duì)列拿出來(lái)再放進(jìn)去,所以時(shí)間復(fù)雜度是O(n)。

以上就是用棧實(shí)現(xiàn)隊(duì)列 & 用隊(duì)列實(shí)現(xiàn)棧的思路。主要是用來(lái)考察棧和隊(duì)列的特性。

責(zé)任編輯:趙寧寧 來(lái)源: fancyJava
相關(guān)推薦

2021-03-01 23:31:48

隊(duì)列實(shí)現(xiàn)棧存儲(chǔ)

2021-09-08 09:52:34

語(yǔ)言

2024-02-02 08:25:34

隊(duì)列與棧Python數(shù)據(jù)結(jié)構(gòu)

2021-03-27 11:02:04

JavaScript隊(duì)列編程語(yǔ)言

2015-09-10 08:46:15

Java面試題

2020-12-17 10:12:33

數(shù)據(jù)結(jié)構(gòu)算法隊(duì)列

2009-04-20 10:09:46

C#優(yōu)先隊(duì)列.NET Framew

2020-10-26 08:19:53

算法隊(duì)列

2020-10-28 10:10:03

Java單鏈表數(shù)據(jù)結(jié)構(gòu)

2020-11-02 08:18:11

隊(duì)列數(shù)據(jù)

2023-12-28 09:55:08

隊(duì)列數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)

2012-03-29 15:15:49

Java

2020-08-10 14:46:30

JavaScriptStack

2011-11-09 14:59:37

LwIP協(xié)議棧

2023-12-07 12:59:46

C語(yǔ)言循環(huán)隊(duì)列代碼

2015-09-15 11:00:49

MEANWeb

2023-09-05 15:48:14

RabbitMQ延遲隊(duì)列

2023-10-10 13:39:53

Spring隊(duì)列優(yōu)化

2011-04-11 11:23:17

隊(duì)列數(shù)據(jù)結(jié)構(gòu)

2017-05-02 22:38:44

前端開(kāi)發(fā)JS事件循環(huán)機(jī)制
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

欧美一区二区三区另类 | 视频在线观看免费高清| 中文字幕在线播放| 国产91对白在线观看九色| 91禁外国网站| 亚洲女人久久久| 激情小说亚洲色图| 欧美日韩美女一区二区| www.射射射| 丝袜美腿美女被狂躁在线观看| 国产suv精品一区二区883| 日本一本a高清免费不卡| 神马午夜精品91| 日韩极品少妇| 日韩欧美在线网站| 亚欧在线免费观看| 不卡专区在线| 亚洲人一二三区| 日本一区免费观看| 国产77777| 开心九九激情九九欧美日韩精美视频电影| 欧美极品少妇xxxxx| 五月激情四射婷婷| 美腿丝袜亚洲图片| 欧美一级久久久| 天天操天天爽天天射| av手机在线观看| 亚洲欧美激情一区二区| 日韩jizzz| 丝袜视频国产在线播放| 国产精品亚洲视频| 国产精选久久久久久| 亚洲GV成人无码久久精品| 亚洲无线一线二线三线区别av| 色阁综合伊人av| 亚洲精品理论片| 大奶在线精品| 日韩欧美国产综合一区| 亚洲日本黄色片| 日韩av一级| 色哟哟一区二区在线观看| 日韩av新片网| 最新av在线播放| 一色屋精品亚洲香蕉网站| 日本一区二区三区视频免费看 | 成人a区在线观看| 91视频免费网站| 亚洲天堂男人网| 免费人成黄页网站在线一区二区| 日韩av免费在线看| 国产在线观看黄色| 欧美亚洲一区二区三区| 91av视频在线观看| 久久露脸国语精品国产91| 影音先锋亚洲精品| 97激碰免费视频| 日本a在线观看| 亚洲经典视频在线观看| 久久男人的天堂| 精品在线免费观看视频| 欧美日韩国产欧| 国内精品伊人久久| 中日韩精品视频在线观看| 99精品福利视频| 97在线视频一区| 手机看片久久久| 久久免费高清| 国产综合久久久久| 国产情侣激情自拍| 国产成人亚洲综合a∨婷婷图片| 亚洲在线第一页| 懂色av一区二区三区四区| 波多野结衣精品在线| 久久精品中文字幕一区二区三区 | 久久躁日日躁aaaaxxxx| 欧美激情一区二区视频| 在线亚洲精品| 国产成人+综合亚洲+天堂| 成人黄色片在线观看| 激情综合色播激情啊| 肥熟一91porny丨九色丨| 五月婷中文字幕| 日本一区二区三区久久久久久久久不 | 国产精品自产拍高潮在线观看| 一级特黄aaa| 国产sm精品调教视频网站| 精品乱子伦一区二区三区| 蜜桃视频在线入口www| 中文字幕在线观看一区| 老司机激情视频| 中文字幕乱码中文乱码51精品| 欧美在线一二三四区| 免费黄频在线观看| 欧美午夜18电影| 亚洲欧美日韩一区二区在线| 成年人二级毛片| 99精品视频免费| 国产男女猛烈无遮挡91| 欧美 日韩 国产 成人 在线 91| 国产亚洲成av人在线观看导航| 一本—道久久a久久精品蜜桃| www.51av欧美视频| 欧美日韩美女一区二区| 熟女丰满老熟女熟妇| 四季av在线一区二区三区 | 日本网站在线播放| 麻豆国产欧美一区二区三区| 国产精品视频入口| 成年人视频网站在线| 亚洲综合色成人| 中文字幕国内自拍| 国产精品自在线拍| 中文字幕亚洲欧美| 丰满少妇乱子伦精品看片| 久久国内精品自在自线400部| 精品久久久久久乱码天堂| 国产鲁鲁视频在线观看特色| 色视频一区二区| 亚洲精品国产成人av在线| 欧美3p视频| 国产成人精品电影久久久| 亚洲国产精品久久人人爱潘金莲 | 日韩电影av| 亚洲二区中文字幕| 中文字幕另类日韩欧美亚洲嫩草| 日韩国产高清影视| 精品视频一区二区| 蜜臀av在线播放| 69堂成人精品免费视频| 刘亦菲国产毛片bd| 久久久蜜桃一区二区人| 狠狠色狠狠色综合人人| 伊人春色在线观看| 911精品国产一区二区在线| 一区二区三区在线观看免费视频| 国产精品日韩精品欧美精品| 国产免费一区二区三区| 爆操欧美美女| 51精品久久久久久久蜜臀| 成人黄色免费网址| 久久影院亚洲| 欧美人与性禽动交精品| 色在线中文字幕| 日韩精品中文字| 国产成人一级片| 91免费精品国自产拍在线不卡 | 日本中文字幕不卡| 欧美激情视频一区二区三区| 蜜桃视频m3u8在线观看| 亚洲第一中文字幕在线观看| 久久精品视频9| 成人在线综合网站| 精品成在人线av无码免费看| 日韩影片在线观看| 色综合老司机第九色激情| 精品黑人一区二区三区在线观看| 亚洲精品久久久久久国产精华液| 97免费公开视频| 欧美三区视频| 精品国产乱码久久久久久久软件 | 福利片在线观看| 欧美无人高清视频在线观看| 亚洲欧美日韩第一页| 美国一区二区三区在线播放 | av毛片在线看| 亚洲精品在线网站| 国产微拍精品一区| 国产亚洲婷婷免费| xxx国产在线观看| 亚洲精品网址| 国产无套精品一区二区| 美女在线视频免费| 中文字幕亚洲欧美一区二区三区 | 黄色精品视频| 久久人人爽人人爽人人片亚洲| www.黄色一片| 日韩欧美国产网站| 亚洲色图日韩精品| 国产白丝精品91爽爽久久| 青青草视频在线免费播放| 国产成人黄色| 亚洲综合精品一区二区| 欧美办公室脚交xxxx| 在线播放亚洲激情| 亚洲成人精品女人久久久| 福利视频第一区| 美国精品一区二区| youjizz久久| 第四色婷婷基地| 亚洲性感美女99在线| 日韩欧美精品在线不卡 | 免费精品视频在线| 精品视频在线观看一区二区| 国产成人精品三级高清久久91| 2014亚洲精品| 桃子视频成人app| 欧美激情久久久| 国产鲁鲁视频在线观看免费| 日韩精品资源二区在线| 日本中文字幕久久| 一区二区三区中文在线观看| 97伦伦午夜电影理伦片| 国产精品影音先锋| 国产精品入口免费软件| 99精品视频免费观看| 亚洲欧美日韩另类精品一区二区三区| 中文字幕视频精品一区二区三区| 国产精品91久久| 99re6在线精品视频免费播放| 日韩在线免费观看视频| 青青国产在线| 欧美精品一区二区在线播放| 91在线公开视频| 日本道色综合久久| 精品一级少妇久久久久久久| 中文字幕字幕中文在线中不卡视频| 少妇大叫太粗太大爽一区二区| 国产成人综合网站| 国产三级精品三级在线| 日韩va亚洲va欧美va久久| 黄色片网址在线观看| 在线观看国产精品入口| 在线观看亚洲视频啊啊啊啊| 免费黄色成人| 精品欧美一区二区三区久久久| 久久久久毛片免费观看| 国产日韩视频在线观看| 成人做爰视频www| 日韩av电影免费观看高清| 波多野结衣在线高清| 久青草国产97香蕉在线视频| 秋霞影院午夜丰满少妇在线视频| 亚洲欧美中文另类| 青青草免费在线| 亚洲国产欧美久久| 人妻一区二区三区| 亚洲第一精品夜夜躁人人躁| 国模私拍视频在线| 日韩精品专区在线影院重磅| 精品国产亚洲一区二区麻豆| 欧美一二三区在线观看| 97caocao| 91精品中文字幕一区二区三区| 亚洲无码久久久久久久| 欧美日韩免费视频| 一级黄色短视频| 欧美日韩精品一区二区三区四区| 亚洲图片欧美在线| 欧美另类高清zo欧美| 夜夜躁狠狠躁日日躁av| 欧美日韩精品综合在线| 国产又粗又猛又黄| 91精品欧美一区二区三区综合在| 国产精品久久久久久无人区| 777精品伊人久久久久大香线蕉| 国产人妻精品一区二区三区| 日韩欧美国产不卡| 亚洲精品国产手机| 亚洲第一视频网| 青青色在线视频| 中文字幕亚洲精品| av免费看在线| 97成人在线视频| av免费在线一区| 成人h猎奇视频网站| 色妞ww精品视频7777| 鬼打鬼之黄金道士1992林正英| 欧美激情极品| 婷婷精品国产一区二区三区日韩| 国产精品久久久久久久| 女人床在线观看| 欧美亚洲一区二区三区| 鲁一鲁一鲁一鲁一av| 韩国理伦片一区二区三区在线播放 | 国产麻豆视频一区| 中文字幕精品视频在线| 久久欧美中文字幕| 国精产品一区一区二区三区mba| 亚洲激情欧美激情| 亚洲熟女综合色一区二区三区| 欧美午夜一区二区三区免费大片| 国产精品无码AV| 亚洲国产精品999| 成年人在线观看网站| 欧美高清在线观看| 亚洲综合在线电影| 99re国产视频| 精品一级毛片| av一区二区三区免费观看| 亚洲一区久久| 免费高清视频在线观看| 91久色porny| 亚洲欧美精品aaaaaa片| 岛国av午夜精品| 99久久精品国产色欲| 国产视频欧美视频| 国产激情在线观看| 日本午夜人人精品| 综合久久成人| 午夜一区二区三视频在线观看| 亚洲午夜黄色| www.久久91| 91美女片黄在线| 色在线观看视频| 在线精品视频小说1| 黄色av中文字幕| 久久九九精品99国产精品| 二区三区不卡| 国产精品久久久一区二区三区| 水蜜桃精品av一区二区| 国产成人精品无码播放| 盗摄精品av一区二区三区| 老司机精品免费视频| 欧美日韩亚洲系列| 亚洲av无码乱码国产麻豆| 中文字幕亚洲一区| 久久精品女人天堂av免费观看| 成人羞羞视频免费| 亚洲影视一区| 鲁一鲁一鲁一鲁一av| 国产色产综合产在线视频| 日韩免费一级片| 日韩欧美的一区二区| 成人日韩欧美| 成人网在线观看| 日韩中文在线电影| 在线观看av日韩| 国产喂奶挤奶一区二区三区| 国产精品视频久久久久久久| 精品久久人人做人人爽| 伊人福利在线| 99久久精品免费看国产四区 | 久久九九免费视频| 亚洲欧洲日韩精品在线| 亚洲国产精品毛片| 日韩av中文字幕一区二区| 免费黄色在线视频| 狠狠色狠狠色综合日日五| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 欧美美女18p| 香蕉免费一区二区三区在线观看| 欧美性受黑人性爽| 狠狠色狠狠色综合系列| 蜜桃av.com| 91精品国产色综合久久久蜜香臀| 麻豆传媒在线观看| 91理论片午午论夜理片久久| 99热精品久久| 搡的我好爽在线观看免费视频| ●精品国产综合乱码久久久久| 国产一区二区网站| 久久精品久久久久电影| 亚洲2区在线| 成人在线观看你懂的| 久久青草欧美一区二区三区| 蜜臀精品一区二区三区| 国产一区二区三区在线观看视频 | 麻豆精品网站| 谁有免费的黄色网址| 欧洲精品一区二区| 欧美成人hd| 99高清视频有精品视频| 伊人久久成人| 91精品人妻一区二区| 欧美性猛交xxxx乱大交退制版| 欧美尤物美女在线| 亚洲影院高清在线| 日韩一级不卡| 天天躁夜夜躁狠狠是什么心态| 欧美日韩成人一区二区| 污污在线观看| 久久婷婷开心| 麻豆免费精品视频| 久久国产精品波多野结衣| 日韩精品免费看| 久久影视精品| 男人的天堂avav| wwww国产精品欧美| 亚洲天堂中文在线| 国模私拍视频一区| av永久不卡| 在线播放av网址| 91久久国产最好的精华液| 精品欧美色视频网站在线观看| 国产伦精品一区二区三区高清| 日韩精品成人一区二区在线| 国精品无码一区二区三区| 亚洲精品理论电影| 日韩一区二区三免费高清在线观看| 日本熟妇人妻xxxx| 国产欧美综合色| 丰满人妻一区二区三区四区53| 欧美在线一区二区视频| 亚洲91久久| 37p粉嫩大胆色噜噜噜| 欧美一区二区日韩一区二区| 日韩精品一区二区三区| 国产爆乳无码一区二区麻豆| 国产欧美日韩中文久久| 蜜臀久久精品久久久久|