順序表的順序與鏈式儲存
自己碼了一遍兩種實現方式的函式模板,都是能直接執行起來的版本。
順序儲存:
#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...