隊列(Queue):是限定只能在表的一端進(jìn)行插入和在另一端進(jìn)行刪除操作的線性表;
棧(Stack):是限定只能在表的一端進(jìn)行插入和刪除操作的線性表。
區(qū)別如下:
一、規(guī)則不同
1、隊列:先進(jìn)先出(First In First Out)FIFO
2、棧:先進(jìn)后出(First In Last Out )FILO
二、對插入和刪除操作的限定不同
1、隊列:只能在表的一端進(jìn)行插入,并在表的另一端進(jìn)行刪除;
2、棧:只能在表的一端插入和刪除。
三、遍歷數(shù)據(jù)速度不同
1、隊列:基于地址指針進(jìn)行遍歷,而且可以從頭部或者尾部進(jìn)行遍歷,但不能同時遍歷,無需開辟空間,因?yàn)樵诒闅v的過程中不影響數(shù)據(jù)結(jié)構(gòu),所以遍歷速度要快;
2、棧:只能從頂部取數(shù)據(jù),也就是說最先進(jìn)入棧底的,需要遍歷整個棧才能取出來,而且在遍歷數(shù)據(jù)的同時需要為數(shù)據(jù)開辟臨時空間,保持?jǐn)?shù)據(jù)在遍歷前的一致性。
四、接口實(shí)現(xiàn)的異同
隊列和棧由Collcetion接口實(shí)現(xiàn),隊列由Queue接口實(shí)現(xiàn),棧由List接口實(shí)現(xiàn)。
五、遍歷數(shù)據(jù)速度的異同
棧只能從頭部取數(shù)據(jù),也就最先放入的需要遍歷整個棧最后才能取出來,而且在遍歷數(shù)據(jù)的時候還得為數(shù)據(jù)開辟臨時空間,保持?jǐn)?shù)據(jù)在遍歷前后的一致性。
隊列基于地址指針進(jìn)行遍歷,而且可以從頭或尾部開始遍歷,無需開辟臨時空間,速度要快的多。