鏈棧的設計依賴於筆者之前設計的鍊錶,詳情請看《c資料結構-線性表之單鏈表 》。
#ifndef linkedstack_h
#define linkedstack_h
#include "linkedlist.h"
typedef linked_list linked_stack;
/** * 建立鍊錶棧
* @return
*/linked_stack *linked_stack_create();
/** * 入棧
* @param pstack 棧指標
* @param p 入棧元素的指標
* @return 成功:1,失敗:0
*/int linked_stack_push(linked_stack *pstack, elem_t *p);
/** * 出棧
* @param pstack 棧指標
* @return 返回出棧元素的值
*/elem_t linked_stack_pop(linked_stack *pstack);
/** * 獲取棧頂元素的值
* @param pstack
* @return
*/elem_t linked_stack_top(linked_stack *pstack);
/** * 判斷棧是否為空
* @param pstack 棧指標
* @return 1為空,否則非空
*/int linked_stack_empty(linked_stack *pstack);
/** * 銷毀棧
* @param pstack 棧指標
* @return 成功:1,失敗:0
*/int linked_stack_destroy(linked_stack *pstack);
#endif // linkedstack_h
#include "linkedstack.h"
/** * 建立鍊錶棧
* @return
*/linked_stack *linked_stack_create()
/** * 入棧
* @param pstack 棧指標
* @param p 入棧元素的指標
* @return 成功:1,失敗:0
*/int linked_stack_push(linked_stack *pstack, elem_t *p)
/** * 出棧
* @param pstack 棧指標
* @return 返回出棧元素的值
*/elem_t linked_stack_pop(linked_stack *pstack)
/** * 獲取棧頂元素的值
* @param pstack
* @return
*/elem_t linked_stack_top(linked_stack *pstack)
/** * 判斷棧是否為空
* @param pstack 棧指標
* @return 1為空,否則非空
*/int linked_stack_empty(linked_stack *pstack)
/** * 銷毀棧
* @param pstack 棧指標
* @return 成功:1,失敗:0
*/int linked_stack_destroy(linked_stack *pstack)
C 資料結構 鏈棧
public class linkstacknode 節點指標 public linkstacknode next public linkstacknode t d 鏈棧 public class linkstack 總長度 public int count 入棧 public void push ...
資料結構 棧 鏈棧
棧的插入和刪除只在棧頂進行操作,在單鏈表中,頭指標是單鏈表的必須元素 而在棧中,棧頂指標也是鏈棧的必須元素,且一般將棧頂放在單鏈表的頭部。線性表有順序儲存結構和鏈式儲存結構,棧屬於線性表的一種,也具有順序儲存結構和鏈式儲存結構。對於棧的鏈式儲存結構,一般稱之為鏈棧。棧的特點 先進後出 棧函式實現 1...
資料結構(C實現) 鏈棧
鏈棧,即棧的鏈式儲存結構,鏈棧通常使用不帶頭結點的單鏈表來表示,因此其結點的結構和單鏈表的結點結構相同。在乙個鏈棧中,棧底就是鍊錶的最後乙個結點,而棧頂總是鍊錶的第乙個結點。因此,新入棧的元素即為鍊錶中採用頭插法新加入的結點,乙個鏈棧可以由棧頂指標唯一確定,當top為null時,則表示該棧是乙個空的...