隊列:
1、隊列是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的后端(rear)進行插入操作,和棧一樣,隊列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。
棧(stack):
1、棧(stack)又名堆棧,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底,棧就相當於一個有底的水桶,出棧的過程就像倒出水的過程,是先進后出。
2、棧(Stack)是操作系統在建立某個進程或者線程時(在支持多線程的操作系統中是線程)為這個線程建立的存儲區域。
堆(Heap):
1、堆是在程序運行時,而不是在程序編譯時,請求操作系統分配給自己某個大小的內存空間。即動態分配內存,對其訪問和對一般內存的訪問沒有區別。
2、堆是指程序運行時申請的動態內存,而棧只是指一種使用堆的方法(即先進后出)。棧是先進后出的,但是於堆而言卻沒有這個特性,兩者都是存放臨時數據的地方。 對於堆,我們可以隨心所欲的進行增加變量和刪除變量,不要遵循什么次序,只要你喜歡。
堆、棧、隊列之間的區別是?
1、堆是在程序運行時,而不是在程序編譯時,申請某個大小的內存空間。即動態分配內存,對其訪問和對一般內存的訪問沒有區別。
2、棧就是一個桶,后放進去的先拿出來,它下面本來有的東西要等它出來之后才能出來。(后進先出)
3、隊列只能在隊頭做刪除操作,在隊尾做插入操作.而棧只能在棧頂做插入和刪除操作。(先進先出)