一、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代表無邊,所以矩...