堆疊與佇列

2021-07-10 05:54:39 字數 941 閱讀 8052

堆疊與佇列可以用陣列實現,也可以用鍊錶實現。下文統一用鍊錶實現上述資料結構。

堆疊服從先進後出原則,只對棧頭進行刪除和插入操作,即封鎖了鍊錶的一端,只對鍊錶的另一端進行操作,就形成了邏輯上的堆疊結構。

//節點

public class stacknode

//堆疊實現

public class stacklink

//入棧操作

public void push(int x)

//出棧操作

public stacknode pop()

else

}//查詢棧頂元素,不從堆疊中移除

public int peak()

}出棧時將頭指標指向的節點暫時儲存(用於返回),然後將頭指標指向下一節點。返回原先儲存的節點,則進行了出棧操作。

入棧是將新節點指向棧頂元素,然後將頭指標指向新節點,則進行了入棧操作。

佇列服從先進先出的原則,對鍊錶的一端只進行刪除(出隊)操作,對另一端只進行入隊操作。則形成了邏輯上的佇列。

//節點

public class queuenode

//佇列

public class queuelink

else

count++;

}//出隊操作

public queuenode remove()

else

count--;

return temp;}}

//判斷是否為空

public boolean isempty()

//返回佇列大小

public int size()

}佇列採用兩個指標,頭指標用於出隊操作,尾指標用於入隊操作。出隊時儲存頭指標節點用於返回,將頭指標指向下一節點。則完成了出隊操作。

入隊時將尾指標指向的節點指向新節點。再將尾指標指向新節點。則完成了入隊操作。

佇列與堆疊

兩個線性資料結構 堆疊 stack 和佇列 queue 堆疊中元素具有後進先出lifo last in fisrt out 而佇列中的元素確實先進先出fifo fisrt in last out define maxsize 50 define false 0 define true 1 typed...

堆疊與佇列模擬

兩個題目 1 用兩個堆疊模擬乙個佇列 2 用兩個佇列模擬乙個堆疊 先看第乙個問題 用兩個堆疊模擬乙個佇列 只需要明白堆疊和佇列的特點,乙個是先進後出,乙個是先進先出就好做事了。乙個堆疊是先進先出,再把這個堆疊的資料存放到第二個堆疊不就ok了,變成了先進先出了麼?所以解決方法1就是兩個棧 stack1...

python 堆疊與佇列

昨天嘗試了python的鍊錶操作,一時意猶未盡,就連續寫了幾行python堆疊與佇列的 當然python作為高階語言,一般都要使用到類。在抒寫 之前,首先要對堆疊和佇列兩種資料結構進行分析,提取出各自類的特徵屬性 資料和方法 class stack def init self,top.top指標 d...