《演算法經典》 第六章 資料結構

2021-07-30 16:12:00 字數 1084 閱讀 3335

一、stl

deque雙端佇列

stack棧的應用——表示式處理

如uva442,多重括號具有的就近原則

(a(bc))

遇到字母時入棧,遇到右括號時出棧並計算,然後結果入棧

二、構造資料結構

鍊錶

可以完成不易用陣列實現的移動、刪除、新增功能

uva11988

題目大意:你在輸入文章的時候,鍵盤上的home鍵和end鍵出了問題,會不定時的按下。

給你一段按鍵的文字,其中』[『表示home鍵,』]』表示end鍵,輸出這段悲劇的文字。

思路:使用鍊錶來模擬,遇到home鍵,就將後邊的文字插入到這段文字的最前邊,遇到

end鍵,就插入到這段文字的最後邊。但是用鍊錶會用到指標,過程比較繁瑣。這裡用乙個

next陣列模擬指向,next[i]表示當前顯示屏中s[i]右邊的字元下標。再用乙個cur表示當前游標的位置,last表示最後乙個字元的記錄位置,這樣遇到end鍵,就能直接找到游標下乙個指向的字元位置了。

注意:常常在鍊錶的第乙個元素之前加一虛擬結點

// uva11988 broken keyboard

// rujia liu

#include

#include

const int maxn = 100000 + 5;

intlast, cur, next[maxn]; // 游標位於cur號字元之後面

char s[maxn];

int main()

}for(int i = next[0]; i != 0; i = next[i])

printf("%c", s[i]);

printf("\n");

} return

0;}

雙向鍊錶

第六章 資料結構

存放同一種資料型別的多個元素的容器,通過索引 記憶體偏移量 進行元素的訪問,陣列的大小一旦確定就不能改變。陣列其實也是線性表結構,在記憶體中陣列的元素是緊挨著連續儲存的。特點 查詢快 增刪慢 舉例 定義乙個陣列 int arr new int 想在2的後面插入乙個新的元素11,這時候就需要定義乙個新...

資料結構第六章樹

第六章 樹 1.樹是n個結點的有限集。n 0時稱為空樹。在任意乙個非空樹中 1 有且僅有乙個特定的稱為根的結點 2 當n 1時,其餘節點可分為m個互不相交的有限集,其中每乙個集合又是一棵樹,並成為根的子樹。2.結點分類 結點擁有的子樹稱為結點的度。度為0的結點稱為葉結點或終端節點 度不為0的結點稱為...

資料結構筆記 第六章

一.圖的儲存結構及實現 圖可以使用兩種儲存結構,分別是鄰接矩陣和鄰接表。鄰接矩陣以矩陣的形式儲存圖所有頂點間的關係。鄰接矩陣具有以下特點 1,鄰接矩陣是正矩陣,即橫縱維數相等。2,矩陣的每一行或一列代表乙個頂點,行與列的交點對應這兩個頂點的邊。3,矩陣的點代表邊的屬性,1代表有邊,0代表無邊,所以矩...