棧的鏈式儲存結構

2021-10-09 02:19:04 字數 1420 閱讀 3453

採用鏈式儲存的棧成為鏈棧,鏈棧的優點是便於多個棧共享儲存空間和提高效率,且不存在棧滿上溢的情況。通常情況採用單鏈表實現,並規定所有的操作都是在單鏈表的表頭進行的。

不含頭結點的鏈棧,lhead指向棧頂元素。

含頭結點的鏈棧,頭結點中只有指向鏈棧的指標,不含有元素。

typedef struct linknode*linkstack;                  //棧型別定義
採用鏈式儲存棧,便於結點的插入和刪除。鏈棧的操作與鍊錶類似,入棧和出棧的操作都在鍊錶的表頭進行。需要注意的是,對於帶表頭結點和不帶表頭結點的鏈棧,具體實現會有所區別。

/**

*帶頭結點的鏈棧實現

**/#include#includestruct stacknode;

/*struct linkstack ;*/

//鏈棧的初始化,建立頭結點

stacknode* initlinkstack()

head->data = 0;

head->next = null;

return head;

}//資料入棧

void push(stacknode* head, int element)

stacknode* node = (stacknode*)malloc(sizeof(stacknode));

if(node == null)

node->data = element;

node->next = head->next;

head->next = node;

}//資料出棧

int pop(stacknode* head)

stacknode* temp = head->next;

head->next = temp->next;

int value = temp->data;

free(temp);

return value;

}//棧的長度

int getlinkstacklength(stacknode* head)

int length = 0;

stacknode* p = head->next;

while(p != null)

return length;

}int main()

**結果

棧 鏈式儲存結構

講完了棧的順序儲存結構,現在來看棧的鏈式儲存結構,簡稱為鏈棧。想想看,棧只是棧頂來做插入和刪除操作,棧頂放在鍊錶的頭部還是尾部?由於單鏈表有頭指標,而棧頂指標也是必須的,所以比較好的辦法是把棧頂放在單鏈表的頭部。都已經有了棧頂在頭部了,單鏈表中常用的頭結點也就失去了意義,通常對於鏈棧來說,是不需要頭...

棧(鏈式儲存結構)

通常由乙個一維陣列和乙個棧頂元素變數組成 如下 define maxsize struct stacknode struct stacknode createstack void push struct stacknode s,elementtype x elementtype pop struct...

鏈式儲存mysql 鏈棧 棧的鏈式儲存結構

前面講完了棧的順序儲存結構,我們現在來看看棧的鏈式儲存結構,簡稱為鏈棧。鏈棧是沒有附加頭結點的運算受限的單鏈表。棧頂指標就是鍊錶的頭指標。棧是用棧頂來做插入和刪除操作,那麼對於鏈棧的棧頂放在鍊錶的頭部還是尾部呢?單鏈表有頭指標,而棧頂指標也是必須的,那幹嗎不讓它倆合二為一呢,所以比較好的辦法是把棧頂...