3 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
假設(shè)有一種盤子,有很多,你一次只能搬得動(dòng)一個(gè),你有時(shí)要把它們一個(gè)一個(gè)摞起來放在一個(gè)墻角,有時(shí)候又要拿出去用。
想象下這種情況,是不是每次從那一摞盤子中只能拿最上面的呢,因?yàn)槟阒荒苊看伟釀?dòng)一個(gè)。如果你每次要放回盤子,是不是也只能放到最上面呢,除非把最上面的一個(gè)一個(gè)往下搬,然后一個(gè)一個(gè)搬回去,才能放到中間。
這個(gè)所謂的其實(shí)就是棧了。
至于你想說堆嘛,其實(shí)并不是一種數(shù)據(jù)結(jié)構(gòu),而是有一定的計(jì)算機(jī)組成的意味了,是一個(gè)邏輯上的概念,和棧不同,因?yàn)闂J且环N數(shù)據(jù)結(jié)構(gòu)。例如在操作系統(tǒng)里面會(huì)有系統(tǒng)堆,系統(tǒng)棧,在算法里面的堆排序里面也有大頭堆,小頭堆,其實(shí)只是一個(gè)概念,并不是數(shù)據(jù)結(jié)構(gòu),需要在特定的環(huán)境下理解。
比如說java中的棧就是指向?qū)ο蟠娣诺奈恢?,而堆卻是由對(duì)象來創(chuàng)立的用來存放對(duì)象的相關(guān)屬性和方法。

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊
棧、隊(duì)都是模擬現(xiàn)實(shí)的一種程序表達(dá)方式。
棧就是先進(jìn)后出的一種數(shù)據(jù)結(jié)構(gòu),所謂的先進(jìn)后出就是越是先進(jìn)去的數(shù)據(jù)越后出來。那什么樣的情形會(huì)出現(xiàn)先進(jìn)去后出來呢?一個(gè)有盡頭的單人棧道就是這樣的。第一人進(jìn)去了,第二個(gè)人進(jìn)去了。。。。第n個(gè)人進(jìn)去了。第一個(gè)人要想出來,必須第二個(gè)人先出來。第二個(gè)人要想出來,必須第三個(gè)人先出來。以此類推。這就叫棧。第一個(gè)人先進(jìn)去的,但是要出來的話,第一個(gè)人確實(shí)最后一個(gè)出來的。
隊(duì)就是先進(jìn)先出的一種數(shù)據(jù)結(jié)構(gòu),如果你了解了先進(jìn)后出的話,先進(jìn)先出就很好理解了。它就是一個(gè)兩頭想通的并且不能后退的通道。就像排隊(duì),第一個(gè)人進(jìn)去,買過票以后從前面出來了,第二個(gè)人繼續(xù)。所以叫先進(jìn)先出
- 3 回答
- 0 關(guān)注
- 1648 瀏覽
添加回答
舉報(bào)