Linux整理筆記(7)

2021-08-15 11:43:03 字數 1758 閱讀 3288

一、棧:是限定僅在表尾進行插入和刪除操作的線性表;又稱後進先出的線性表。 lifo結構。

棧頂top:允許插入和刪除的一端;

棧底bottom:另外一端;

二、棧的操作:

進棧,壓棧,入棧:棧的插入操作;

出棧,彈棧:棧的刪除操作;

棧中有乙個元素時,top=0;

空棧時,top=-1;

三、鏈式棧

棧的鏈式儲存結構是通過由結點構成的單鏈表實現的,此時表頭指標被稱為棧頂指標,由棧頂指標指向的表頭結點被稱為棧頂結點,整個單鏈表被稱為鏈棧。鏈棧和順序棧不同,鏈棧是採用乙個個儲存結點來儲存資料的。它不像順序棧在位址上是連續的線性儲存結構。所有的儲存單元可以占用連續或不連續的儲存區域。每個儲存單元在儲存棧中的元素a1的同時,也儲存其邏輯後繼

a2的儲存位址。

四、棧的鏈式儲存結構

棧的鏈式儲存結構,簡稱為鏈棧;

棧頂放在單鏈表的頭部;

鏈棧是不需要頭結點的。

鏈棧不存在棧滿的情況。

五、棧的抽象資料型別:

插入和刪除:push,

pop  

同線性表。  元素具有相同的型別,相鄰元素具有前驅和後繼的的關係。

操作:a.初始化操作,建立空棧s;

b.若棧存在,就銷毀它;

c.將棧清空;

d.判斷棧是否空:空返回

true

,否則返回

false;

e. 若棧存在非空,用e返回

s的棧頂元素;

f. 若棧

s存在,插入新元素e到棧

s成為棧頂元素;g.刪除棧

s棧頂元素,

並用e返回

其值;h.返回棧

s的元素個數。

六、順序棧

棧的順序儲存其實也是線性表的順序儲存的簡化,簡稱順序棧。

入棧:棧頂指標加1;將新插入元素賦值給棧頂空間;

出棧:將要刪除的棧頂元素賦值給e,棧頂指標減1。

七、共享棧

其實是乙個陣列,從兩邊存放資料。原理:用陣列的0號位置標記

stack1

的棧低,

top1

標記stack1

的棧頂;用

size-1

標記stack2

的棧頂,用

top2

標記stack2

的棧頂,

top1

和top2

向中間移動,只要

top1

和top2

不相遇則棧未滿。

八、中綴表示式轉字尾表示式

轉換過程如下:

(1)從頭到尾掃瞄中綴表示式,若遇到數字則直接寫入字尾表示式,

(2)若遇到運算子,則比較棧頂元素和該運算子的優先順序,當該運算子的優先順序大於棧頂元素的時候,表明該運算子的後乙個運算物件還沒有進入字尾表示式,應該把該運算子暫存於運算子棧中,然後把它的後乙個運算物件寫入到字尾表示式中,再令其出棧並寫入字尾表示式中;若遇到的運算子優先順序小於等於棧頂元素的優先順序,表明棧頂運算子的兩個運算物件已經被寫入字尾表示式,應將棧頂元素出棧並寫入字尾表示式,對於新的棧頂元素仍進行比較和處理,直到棧頂元素為#,然後將新元素進棧。

九、遞迴

把乙個直接呼叫自己或通過一系列的呼叫語句間接地呼叫自己的函式,叫做遞迴函式。每個遞迴定義必須至少有乙個條件,滿足時遞迴不再進行,即不再引用自身而是返回值退出。

十、字尾表示式計算結果

從左到右遍歷表示式的每個數字和符號,遇到數字進棧,遇到符號就將處於棧頂的兩個數字出棧,進行運算,運算結果進棧,直至最終獲得結果。

LINUX筆記整理

uname a 檢視核心版本 ls al 顯示所有檔案的屬性 pwd 顯示當前路徑 cd 返回上一次目錄 cd 返回主目錄 cal 顯示日曆 cal 2006 bc 計算器具 man info 幫助手冊 locale 顯示當前字型 locale a 所有可用字型 etc sysconfig i18n...

CMake 學習筆記整理 7

把筆記分享給大家!接上篇內容 cmake 學習筆記整理 6 t17 之前的筆記t9,install files xyz.h destination include xyz proj2 src main.cpp include int main cmake 被設計成了可擴充套件的架構,可以通過編寫一些...

C語言整理筆記(7)

輸入乙個整數值,顯示出從它開始遞減到0的每乙個整數,如下 includeint main return 0 while語句 while 表示式 語句 while語句結束之後會執行putchar n 這樣的語句。像 n 和 a 這樣用單引號括起來的字元稱為字元常量。字元常量是int型別。putchar...