目錄
線性表線性表的順序儲存結構
插入操作:
刪除操作:
優點:缺點:
線性表的鏈式儲存結構
頭指標和頭結點的異同:
單鏈表的讀取:
單鏈表的插入
單鏈表的刪除
單鏈表的整表建立(頭插法、尾插法)
單鏈表的整表刪除
靜態鍊錶(游標實現法)
迴圈鍊錶
雙向鍊錶
1.插入位置不合理,丟擲異常
2.線性表長度大於陣列長度,丟擲異常或動態增加容量
3.從最後乙個元素開始向前遍歷到第i個位置,分別將他們都向後移動乙個位置
4.將要插入元素填入位置i處
5.表長加1
1.如果刪除位置不合理,丟擲異常
2.取出刪除元素
3.從刪除元素位置開始遍歷到最後乙個元素位置,分別將它們都向前移動乙個位置
4.表長減1
1.無須為表示表中元素之間的邏輯關係而增加額外的儲存空間;
2.可以快速地訪問表中任意位置的元素
1.插入和刪除操作都需要移動大量元素;
2.當線性表長度變化較大時,難以確定儲存空間的容量;
3.造成儲存空間的碎片
用任意儲存單元儲存線性表的資料元素,可以連續,也可以不連續,除了要存資料元素資訊外,還要儲存它的後繼元素的儲存位址
儲存資料元素資訊的域稱為資料域,儲存直接後繼位置的域稱為指標域,指標域中儲存的資訊稱作指標或鏈,資料域和指標域組成結點
單鏈表:n個結點鏈結成乙個鍊錶,即為線性表的鏈式儲存結構,此鍊錶的每個結點中只包含乙個指標域
鍊錶中第乙個結點的儲存位置叫做頭指標,最後乙個結點指標為空(null或^)
為方便操作,在單鏈表的第乙個結點前附設乙個結點,稱為頭結點
頭指標:1.頭指標是指鍊錶指向第乙個結點的指標,若煉表有頭結點,則是指向頭結點的指標;
2.頭指標具有表示作用,所以常用頭指標冠以鍊錶的名字;
3.無論鍊錶是否為空,頭指標均不為空。頭指標是鍊錶的必要元素
頭結點:1.頭結點是為了操作的統一和方便而設立的,放在第一元素的結點之前,其資料域一般無意義(也可以存放鍊錶的長度);
2.有了頭結點,對在第一元素結點前插入結點和刪除第一結點的操作與其他結點的操作統一
3.頭結點不一定是鍊錶必須元素
1.宣告乙個結點p指向鍊錶第乙個結點,初始化j從1開始
2.當j
1.宣告一結點p指向鍊錶第乙個結點,初始化j從1開始
2.當jdata
6.單鏈表的插入標準語句s->next = p->next;p->next = s;
7.返回成功
1.宣告一結點p指向鍊錶第乙個結點,初始化j從1開始
2.當jnext賦值給q
5.單鏈表的刪除標準語句p->next = q->next
6.將q結點中的資料賦值給e,作為返回
7.釋放q結點
8.返回成功
對於插入或刪除越頻繁的操作,單鏈表的效率優勢越明顯
1.宣告一結點p和計數器變數i
2.初始化一空鍊錶l
3.讓l的頭結點的指標指向null,即建立乙個帶頭結點的單鏈表
4.迴圈:
生成一新結點賦值給p
隨機生成一數字賦值給p的資料域p->data
將p插入到頭結點與新一結點之間
用陣列描述的鍊錶叫做靜態鍊錶(資料域data存放資料元素,游標cur存放該元素的後繼在陣列中的下標)
在插入和刪除操作時,只需要修改游標,不需要移動元素,從而改進了在順序儲存結構中的插入和刪除需要移動大量元素的缺點
沒有解決連續儲存分配帶來的表長難以確定的問題,失去了順序儲存結構隨機儲存的特性
將單鏈表中終端結點的指標端由空指標改為指向頭結點,就使整個單鏈表形成乙個環,
這種頭尾相接的單鏈表成為單迴圈鍊錶,簡稱迴圈鍊錶
終端結點用尾指標rear表示
在單鏈表的每個結點中,再設定乙個指向其前驅結點的指標域
資料結構 線性表知識要點複習
雙向鍊錶 迴圈鍊錶 線性表常見題型 最後的碎碎念 線性表是n個資料元素的有限序列,是最簡單的資料結構,有以下幾個特點。同一線性表中元素必須屬於同一資料物件 相鄰元素之間有序偶關係 線性表的抽象資料型別如下1 順序表示是用一組位址連續的儲存單元依次儲存線性表的資料元素,有點類似於陣列。因為可以直接用陣...
鏈式線性表和順序線性表
在這裡插入 片 線性表的儲存結構 typedef struct seqlist typedef struct seqlist 順序表基本操作 初始化順序表在這裡插入 片 intseqlist init seqlist list,int size 插入資料元素在這裡插入 片 intseqlist in...
線性表演算法題庫 線性表習題
鍊錶。若指標p指向某結點時,能夠根據該指標找到其直接後繼,能夠順後繼指標鏈找到p結點後的結點。但是由於不知道其頭指標,所以無法訪問到p指標指向的結點的直接前趨。因此無法刪去該結點。2.雙鏈表。由於這樣的鍊錶提供雙向指標,根據p結點的前趨指標和後繼指標可以查詢到其直接前趨和直接後繼,從而可以刪除該結點...