最近在看coursera上的慕課,感覺還挺簡潔的,推薦一下:
資料結構與演算法
而且有配套的slides可以學習。
線性表的概念
表目:線性表中的元素(可包含多個資料項,記錄)
空表:長度為零的線性表。
線性結構
二元組b=(k,r)k為元素,r為關係
邏輯關係:前驅/後繼,其性質為:
線性表邏輯結構包括:長度 表頭 表尾 當前位置
線性結構的性質為:
線性表分類
按訪問方式劃分
直接訪問型、順序訪問型、目錄索引型
查詢元素快速
插入、刪除元素較慢
儲存效率高
需要預先知道最大長度
需要連續儲存空間
2.3 鍊錶
分類:單鏈 雙鏈 迴圈鏈
儲存節點 = 資料域 + 指標域
雙鏈表(double linked list)
元素 = prev + data + next
迴圈鍊錶(circularly linked list)
將單鏈表/雙鏈表的頭尾結點相連
沒有增加額外開銷 更方便
注意:單鏈表尾結點:an-1 -> next = null,但迴圈鍊錶為:an-1 -> next = head
2.4 順序表和煉表的比較
順序錶鏈表
儲存資料特點
適合儲存靜態資料
適合儲存動態資料
插入、刪除操作
速度慢,時間複雜度o(n)
速度快,時間複雜度o(1)
查詢操作
速度快,時間複雜度o(1)
速度慢,時間複雜度o(n)
儲存結構
儲存需要連續空間
儲存使用動態空間
儲存效率
儲存效率高
每個元素都有結構性儲存開銷
長度估計
需要預先估計最大長度
無需事先了解線性表長度
資料結構 二
字串處理 strlen 用來計算字元的長度,並不包括結束字元 0 空字元長度為0 1 include 2 3 int strlen char string 4 10 int main 11 strcpy char str1,char str2 用來拷貝字串,把str2每個字元都拷貝到str1中,直到...
資料結構(二)
1.順序表和煉表綜合 在遞增有序的順序表中程式設計實現a a b c typedef intelemtype include sqlist.h 即為資料結構 一 順序表部分 include int main else continue else continue output mylist1 sys...
資料結構 (二)
第四章 樹和二叉樹 1 對於具有層次結構的資料需要用樹形結構來描述。2 樹形結構中乙個結點可以有乙個或多個直接後繼。3 樹是n個結點的有限集合,滿足 當n 0時,稱為空樹 當n 0時,有且僅有乙個稱為根的結點,除根結點外,其餘結點分為m m 0 個互不相交的非空集合,這些集合中的每乙個都是一棵樹,稱...