棧(stack)又名堆疊,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。
**實現:
/**
* @author: stephen
* @date: 2019/12/17 22:47
* @content: 實現棧儲存
*/public class mystack
// 壓入元素
public void push(objects element)
newarr[elements.length]
= element;
elements = newarr;
}// 取出棧頂元素
public object pop(
) // 去除陣列的最後乙個元素
object element = elements[elements.length-1]
;// 建立乙個新的陣列
object[
] newarr = new object[elements.length-1]
;// 原陣列中除了最後乙個元素的其它元素都放入到新陣列中
for(
int i=
0;i1;i++)
// 替換陣列
elements = newarr;
// 返回棧頂元素
return element;
}// 檢視棧頂元素
public object peek(
) // 判斷棧是否為空
public
boolean isempty(
)}
定義:佇列,又稱為佇列(queue),是先進先出(fifo, first-in-first-out)的線性表。在具體應用中通常用鍊錶或者陣列來實現。佇列只允許在後端(稱為rear)進行插入操作,在前端(稱為front)進行刪除操作。
和堆疊一樣的,也有兩種操作,進隊(enqueue)和出隊(dequeue),對於空佇列進行出隊操作會造成下溢位(underflow),相應的堆滿佇列進行進隊操作為發生上溢位
**實現
/**
* @author: stephen
* @date: 2019/12/17 23:17
* @content: 實現佇列
*/public class myqueue
/*** 入隊
* @param element
*/public void add
(object element)
newarr[elements.length]
= element;
elements = newarr;
}/**
* 出隊 : 將對頭的取出
*/public object poll(
) // 把陣列中的第0個元素取出
object element = elements[0]
; object[
] newarr = new object[elements.length-1]
;for
(int i=
0;i// 替換陣列
elements = newarr;
return element;
}public
boolean isempty(
)}
單鏈表是鍊錶的其中一種基本結構。乙個最簡單的結點結構如圖所示,它是構成單鏈表的基本結點結構。在結點中資料域用來儲存資料元素,指標域用於指向下乙個具有相同結構的結點。
因為只有乙個指標結點,稱為單鏈表。
單鏈表中三個概念需要區分清楚:分別是頭指標,頭節點和首元節點。
單鏈表中可以沒有頭結點,但是不能沒有頭指標!
頭節點的引入能使鍊錶對第乙個元素的刪除和插入和其他元素相同,不用另外說明,使得**更加簡潔。
**實現
/**
* @author: stephen
* @date: 2019/12/17 23:45
* @content: 單鏈表的實現
*/public class node
// 為節點追加節點
// 想要在乙個節點無線追加
// 判斷當前節點是否有元素
node currentnode = this;
// 迴圈向後找
while
(true
) // 賦給當前節點
currentnode = nextnode;
}// 把需要追加的節點追加為找到當前節點的下乙個節點
currentnode.
next
= node;
return this;
}// 獲取下乙個節點
public node next()
// 獲取節點中的資料
public object getdata(
) // 判斷當前節點是否是最後乙個節點
public
boolean islast(
)}
佇列 棧(資料結構與演算法)
佇列是一種先進先出 fifo 的資料結構,從隊尾進,從隊頭出 在 fifo 資料結構中,將首先處理新增到佇列中的第乙個元素。如上圖所示,佇列是典型的 fifo 資料結構。插入 insert 操作也稱作入隊 enqueue 新元素始終被新增在佇列的末尾。刪除 delete 操作也被稱為出隊 deque...
資料結構與演算法(棧與佇列)
棧 stack 有些地方稱為堆疊,是一種容器,可存入資料元素 訪問元素 刪除元素,他的特點在於只能允許在容器的一端 稱為棧頂端指標,英語top 進行加入資料 英語push 和輸出資料 英語pop 的運算。沒有了位置概念,保證任何時候可以訪問 刪除的元素都是此前最後存入的那個元素,確定了一種預設的訪問...
資料結構與演算法 棧和佇列
棧 是限制在表的一端進行插入和刪除運算的線性表。棧又稱後進先出簡稱lifo表 佇列 也是一種運算受限的線性表。它只允許在標的一端進行插入,而在另一端進行刪除。佇列亦稱先進先出fifo表 1.棧與佇列的區別 1 佇列先進先出,棧先進後出。2 對插入和刪除操作的 限定 棧是限定只能在表的一端進行插入和刪...