基本概念
只能從線性表的一端進行插入和刪除元素操作的資料結構即為棧。
應用場景
根據概念我們就可以得出,凡是只在資料結構一端進行插入刪除的,並且不需要支援隨機訪問的場景就可以採用棧結構。
下面列舉一些棧的使用場景: 分類
按照**實現,可以分為兩類:順序棧和鏈式棧。前者是基於順序表實現的,後者是基於鍊錶實現的。
以下方法用鏈式棧實現,可以實現動態增長定義節點
每個節點都有兩個域:數值域和指標域。
typedef int datatype;
typedef struct stacknode stack;
壓棧
這裡採用鏈式棧的頭插操作,因為時間複雜度為o(1),如果採用尾插,時間複雜度為o(n)。
步驟:
void
push
(stack *
*stack, datatype elem)
**注意:**第乙個引數是乙個二級指標,原因是需要在函式內部更改外部指標的指向。指標也是乙個變數,如果需要在函式內部修改外部變數的值,引數就要傳遞外部變數的位址,一級指標的位址就是二級指標。
出棧這裡採用鏈式棧的頭刪操作,因為時間複雜度為o(1),如果採用尾刪,時間複雜度為o(n)。
步驟:
void
pop(stack *
*stack)
stack *tmp =
*stack;
*stack =
(*stack)
->_next;
free
(tmp)
;}
獲取棧頂stack*
top(stack* stack)
Vi 簡易教程
vi file1 file2 此時,您會發現您面對如下視窗 圖 4.4.vim 開始 您現在是在開啟的第乙個檔案的最前面,並處於 命令模式 在此模式下,您不能往檔案中插入文字。要插入文字,您需要先切換到 插入模式 以下是一些插入文字的快捷方式 在插入模式中,您會在螢幕底部看到 插入 字串 提示您所處...
Vim簡易教程
vim時linux內建的一款可定製的文字編輯器,使用者可以根據自己的需求對其進行功能的補充。要對文字內容進行編輯,需要按下 i,i,o,o,a,a,r,r 這些鍵中的任意乙個,此時vi編輯器將處於編輯狀態,使用者便可對文字進行需要的修改。下面對這個開啟編輯模式的鍵進行簡單的介紹 命令含義 i進入編輯...
svn簡易教程
主要以debian linux 為例,使用以下命令安裝svn tl debian sudo apt get install subversion 安裝完成後,檢視安裝的svn版本 tl debian svn version tl debian mkdir svn tl debian svnadmin...