浙大資料結構習題筆記 順序表與單鏈表

2021-10-07 09:32:16 字數 3156 閱讀 7861

順序表的順序與鏈式儲存

自己碼了一遍兩種實現方式的函式模板,都是能直接執行起來的版本。

順序儲存:

#include

#include

#define max_size 100

typedef

int elemtype;

typedef

struct lnode *list;

//線性表定義

struct lnode

;list l;

//訪問下標的元素:l->data[i]

//線性表的長度:l->last+1

list makeempty()

;//初始化順序表

intfind

(elemtype x,list l)

;//查詢x出現的下標

void

insertlist

(elemtype x,

int i,list l)

;//下標i處插入x

void

deletelist

(int i,list l)

;//刪除下標i處的值

elemtype findvalue

(int k,list l)

;//返回下標k處的值

void

printlist

(list l)

;int

length

(list l)

;//返回順序表長度

list makeempty()

intfind

(elemtype x,list l)

else

}void

insertlist

(elemtype x,

int i,list l)

if(i<

0|| l->last+

1for(j=l->last; j>=i ;j--

) l->data[i]

= x;

l->last++

;return;}

;void

deletelist

(int i,list l)

for(j=i;j<=l->last;j++

) l->last--

;return;}

;elemtype findvalue

(int k,list l)

return l->data[k];}

;int

length

(list l)

;void

printlist

(list l)

printf

("end\n");

}int

main()

//l-data[0] insert 11

//l-data[0] insert 25

//l-data[0] insert 33

//l-data[0] insert 77

//list is 11 25 33 77 end

//find 25's location:1

//find under2's value:33

//delete 2nd element

//now list is 11 33 77 end

鏈式儲存(鍊錶)

#include

#include

typedef

int elemtype;

typedef

struct lnode *list;

struct lnode

;list l;

list makeempty()

;int

length

(list l)

;//鍊錶長——遍歷

list findth

(int th,list l)

;//按序號查詢

list findvalue

(elemtype x,list l)

;//按值查詢

list insert

(elemtype x,

int i,list l)

;//將值x插入到第i-1個結點後面

list delete

(int i,list l)

;//刪除第i個結點

void

printlist

(list l)

;//輸出鍊錶結點

list makeempty()

intlength

(list l)

return len;

}list findth

(int th,list l)

if(i == th)

else

}list findvalue

(elemtype x,list l)

return p;

//找到了:p是這個結點,找不到:p是null};

list insert

(elemtype x,

int i,list l)

p =findth

(i-1

,l);

//定位第i-1個結點

if(p ==

null

)else};

list delete

(int i,list l)

else

free

(q);

return l;

} p =

findth

(i-1

,l);

if(p ==

null

|| p->next ==

null

)else};

void

printlist

(list l)

if(flag !=0)

printf

("end\n");

};intmain()

//list is 11 25 33 77 end

//list length:4

//2nd value:25

//delete 2nd list:list is 11 33 77 end

浙大資料結構習題1 單鏈表分段逆轉

題目概述 給定乙個帶頭結點的單鏈表和乙個整數k,要求你將鍊錶中的每k個結點做一次逆轉。例如給定單鏈表 1 2 3 4 5 6 和 k 3,你需要將鍊錶改造成 3 2 1 6 5 4 如果 k 4,則應該得到 4 3 2 1 5 6 資料形式 typedef struct node ptrtonode...

浙大資料結構 單鏈表逆轉

6 8 單鏈表逆轉 20 分 本題要求實現乙個函式,將給定的單鏈表逆轉。list reverse list l 其中list結構定義如下 typedef struct node ptrtonode struct node typedef ptrtonode list 定義單鏈表型別 l是給定單鏈表,...

浙大資料結構習題筆記 最小堆的建立

最小堆的建立有兩種方式的插入 一種是逐次插入的時候排序成完全二叉樹,比較簡單。另一種是借助堆排序的方法,先輸入所有的節點,再通過類似於堆的刪除操作的方式,從存在子節點的節點開始反向排序,將所有的節點捋順。include include const int mindata 100000 const i...