堆疊與佇列可以用陣列實現,也可以用鍊錶實現。下文統一用鍊錶實現上述資料結構。
堆疊服從先進後出原則,只對棧頭進行刪除和插入操作,即封鎖了鍊錶的一端,只對鍊錶的另一端進行操作,就形成了邏輯上的堆疊結構。
//節點
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...