資料結構與演算法
演算法的5個基本特性:輸入、輸出、有窮性、確定性和可行性
演算法的時間複雜度 t=o(f(n))
空間複雜度 s(n)=o(f(n)) 儲存空間的實現
線性表:
(list)零個或多個資料元素的有限序列
順序儲存結構:連續的儲存單元
#define maxsize 20
typedef int elemtype;
typedef struct
sqlist;
鏈式儲存結構
單鏈表靜態鍊錶
#define maxsize 1000
typedef struct
component,staticlinklist[maxsize];
陣列第乙個元素的cur用來存放備用鍊錶的第乙個結點下標
最後乙個元素的cur用來存放第乙個插入元素的下標,相當於頭結點
迴圈鍊錶
有頭指標的
p->next 不等於頭結點,則迴圈未結束
不用頭指標的,用終端結點的尾指標表示迴圈鍊錶
rear->next->next即為開始結點
rear->next是儲存頭結點的結點
雙向鍊錶
typedef struct dulnode
dulnode, *dulinklist;
棧與佇列
棧是限定僅在表尾(棧頂top)進行查尋和刪除操作的線性表。先進後出
佇列是只允許在一端進行插入操作、而在另一端進行刪除操作的線性表。先進先出
棧頂top
棧底bottom
last in first out
簡稱lifo
棧的順序儲存:
棧的結構定義
typedef int elemtype;
typedef struct
sqstack;
兩棧共享空間結構(兩個相同資料型別的棧)
typedef struct
sqdoublestack;
當top1+1==top;時為棧滿
我們還需要乙個判斷是棧1還是棧2的棧號引數stacknumber。
棧的鏈式儲存:(鏈棧)
鏈棧的結構
棧的應用–遞迴
斐波那契數列
int fbi(int i)
四則運算表示式求值
中綴表示式轉字尾表示式
規則:從左到右遍歷中綴表示式的每個數字和符號,若是數字就輸出,即成為字尾表示式的一部分;
若是符號,則判斷其與棧頂符號的優先順序,是右括號或優先順序低於棧頂符號則棧頂元素依次出棧並輸出,並將當前符號進棧
一直到輸出字尾表示式為止。
佇列 first in first out 簡稱fifo
允許插入的一端為隊尾,允許刪除的一端為隊頭front
rear指標指向隊尾元素的下乙個位置)
front指標指向隊頭元素
當front= =rear時為空佇列
迴圈佇列
如何判斷空、滿
設定乙個標誌變數flag
當front= =rear&&flag= =0時隊列為空
當front= =rear&&flag= =1時隊列為滿
方法二保留最後乙個空間
當front = =rear ,為空
當(rear+1)%queuesize = = front ,為滿
計算佇列長隊公式:
(rear - front +queuesize)%queuesize
迴圈佇列的順序儲存結構
typedef struct
sqqueue;
初始化initqueue
長度 queuelength
入隊
status enqueue (sqqueue *q,elemtype e)
//出隊
status dequeue (sqqueue *q,elemtype *e)
以上為順序儲存
佇列的鏈式儲存結構
typedef int elemtype;
//結點結構
typedef struct qnode
qnode,*queueptr;
//佇列鍊錶結構
typedef struct
linkqueue;
串(p149)
kmp模式匹配演算法(p159)
樹(tree)
資料結構 棧 佇列 鍊錶
棧 1,棧只能從表的一端訪問資料,另一端是封閉的。2,在棧中,無論是存資料還是取資料,都必須遵循 先進後出 的原則,即最先進棧的元素最後出棧。基於 棧結構的特點,在實際應用中,通常只會對棧執行以下兩種操作 向棧中新增元素,此過程被稱為 進棧 入棧或壓棧 從棧中提取出指定元素,此過程被稱為 出棧 或彈...
資料結構 棧 佇列 鍊錶
棧 1,棧只能從表的一端訪問資料,另一端是封閉的。2,在棧中,無論是存資料還是取資料,都必須遵循 先進後出 的原則,即最先進棧的元素最後出棧。基於 棧結構的特點,在實際應用中,通常只會對棧執行以下兩種操作 向棧中新增元素,此過程被稱為 進棧 入棧或壓棧 從棧中提取出指定元素,此過程被稱為 出棧 或彈...
資料結構與演算法之陣列 鍊錶 佇列 棧
一 陣列 陣列是乙個儲存元素的線性集合,它使用一塊連續的記憶體空間儲存資料,儲存的資料的個數在分配記憶體的時候就是確定的。訪問陣列中第 n 個元素的時間花費是o 1 在陣列中查詢乙個指定的元素則是o n 向陣列中插入或刪除元素時,最好的情況是在陣列的末尾進行操作,時間複雜度是o 1 最壞情況是插入或...