考研計算機資料結構(個人筆記) 第2章 線性表

2021-10-06 16:51:00 字數 3283 閱讀 8356

為了考研過程中方便總結看書和聽課的記錄,決定將一些內容敲成部落格以供自己複習和使用,僅供參考。

#define maxsize 100;

//這裡定義了乙個整型常量maxsize,值為100

1、順序表的結構體定義

typedef

struct

sqlist;

考試中順序表簡寫

int a[maxsize]

;int n;

2、單鏈表結點定義

typedef

struct lnode

lnode;

3、雙鏈表結點定義

typedef

struct dlnode

dlnode;

(1)初始化順序表

void

initlist

(sqlist &l)

//l本身要發生變化所以用引用型

(2)求指定位置元素

int

getelem

(sqlist l,

int p,

int&e)

(3)插入資料元素

int

insertelem

(sqlist &l,

int p,

int e)

(4)按元素值查詢

int

findelem

(sqlist l,

int e)

(5)刪除資料元素

int

deleteelem

(sqlist &l,

int p,

int&e)

(1)尾插法建立鍊錶

➡️結點插入操作(在 p 所指結點後插入 s 所指結點)

s-

>next = p-

>next;

p->next = s;

void

createlistr

(lnode *

&list,

int a,

int n)

r->next =

null

;}

(2)頭插法建立鍊錶

void

createlistf

(lnode *

&list,

int a,

int n)

}

(3)遞增單鏈表——尾插法;歸併操作

void

merge

(lnode *a, lnode *b, lnode *

&c)else

}/*以下兩個if語句將還有剩餘結點的鍊錶鏈結在c的尾部*/

if(p !=

null

) r-

>next = p;

if(q !=

null

) r-

>next = q;

}

(4)遞減單鏈表——頭插法;歸併操作

void

merge

(lnode *a, lnode *b, lnode *

&c)else

}/* 這裡與求遞增歸併序列不同,必須迴圈將剩餘元素逐個插入c的頭部(頭插法) */

while

(p !=

null

)while

(q !=

null

)}

(5)按值查詢並刪除

➡️結點刪除操作:要將單鏈表第 i 個結點刪去,必須先在單鏈表中找到第 i-1 個結點,在刪除其後繼結點。刪除操作除了修改指標外還需要釋放所刪除的結點的記憶體空間,完整的刪除操作(刪除 p 所指結點)。

q = p-

>next;

p->next = p-

>next-

>next;

free

(q);

int

findanddelete

(lnode *c,

int x)

if(p-

>next ==

null

)return0;

else

}

(1)採用尾插法建立雙鏈表

void

creatdlistr

(dlnonde *

&l,int a,

int n)

r->next =

null

;}

(2)查詢結點的演算法

dlnode* findnode (dlnode *c,

int x)

return p;

}

(3)插入結點的演算法

s-

>next = p-

>next;

s->prior = p;

p->next =s;

s->next-

>prior=p;

(4)刪除結點的演算法

q = p-

>next;

p->next = q-

>next;

q->next-

>prior= p;

free

(q);

迴圈單鏈表和迴圈雙鏈表是由對應的單鏈表改造而來,只需要在終端結點和頭結點間建立聯絡即可。

與對應當鍊錶和雙鏈表類似:

只需在終端結點與頭結點建立聯絡

迴圈單鏈表只要讓終端結點的 next 指向頭結點

雙鏈表:讓終端結點的 next 指向頭結點,讓頭結點指向終端結點。

判斷 p 指標走到表尾的條件是p->next ==head。

元素逆置:假設陣列存在於陣列a[ ]中,left 和 right是陣列兩端元素下標。

for

(i = left, j = right; i < j;

++i,

--j)

待更新

考研計算機資料結構(個人筆記) 第1章 緒論

為了考研過程中方便總結看書和聽課的記錄,決定將一些內容敲成部落格以供自己複習和使用,僅供參考。考研中只需寫出乙個或多個可以解決問題的有著清楚介面描述的函式即可。下面展示乙個例子。1 include define using namespace std 2void reverse int a,4voi...

第2章 計算機資料

人類最常用的數制是十進位制,而計算機採用二進位制。2.1 二進位制數 2.1.1 數制 為了便於理解二進位制,先從大家熟悉的十進位制開始介紹。1.十進位制 十進位制的基本特徵如下。基數為10,採用0 1 2 3 4 5 6 7 8 9十個數碼。逢十進一。處於不同位置上的數碼位權不同。從小數點向兩側數...

計算機基礎 資料結構

佇列 rear指向最後元素的下乙個 串樹 赫夫曼樹 生成樹 無向。圖有n個點,有n 1條邊 b樹 磁碟頁對應b樹的節點,只要那些包含元素地節點大小不超過磁碟頁大小,樹的高度決定訪問磁碟次數 一次磁碟io後就進入記憶體進行比較 它比二叉樹的優勢在於,只要樹矮一些,就能提高查詢效率,適合資料量大的查詢。...