自己用c寫的list雙向煉表頭檔案
1list#ifndef _list_h_
2#define _list_h_
34 #include 5 #include 6 #include 7
8 typedef int
datatype;
9struct
node;
1415 typedef struct
node node;
1617
struct
list;
2223 typedef struct
list list;
2425
void init(list *l);
26void destroy(list *l);
27 size_t size(list *l);
28bool isempty(list *l);
29void addnodeafter(node * pn, node *new_node);
30void addfirst(list *l, datatype item);
31void addlast(list *l, datatype item);
32 datatype getfirst(list *l);
33 datatype getlast(list *l);
34void removenodeafter(node *pn);
35 datatype removefirst(list *l);
36 datatype removelast(list *l);
37void showall(list *l);
3839
//用calloc建立2個帶有預設初始值的node,分別賦給root,和tail,並鏈結好root和tail.
40void init(list *l)
4149
50//
釋放占用記憶體
51void destroy(list *l)
5260 l->root = l->tail =null;
61 l->size = 0;62
}6364//
返回當前元素個數
65 size_t size(list *l)
6669
70bool isempty(list *l)
7174
75//
將新增節點new_node鏈結在節點pn後面
76void addnodeafter(node * pn, node *new_node)
7783
84//
向鍊錶頭部新增新元素item
85void addfirst(list *l, datatype item)
8692
93//
向鍊錶尾部新增新元素item
94void addlast(list *l, datatype item)
95101
102//
返回鏈首元素的值
103 datatype getfirst(list *l)
104109
110//
返回鏈尾元素的值
111 datatype getlast(list *l)\
112117
118//
刪除pn後面的節點,並釋放被刪節點占用的記憶體
119void removenodeafter(node *pn)
120126
127//
移除鏈首元素
128 datatype removefirst(list *l)
129137
138//
移除鏈尾元素
139 datatype removelast(list *l)
140148
149//
遍歷鍊錶
150void showall(list *l)
151157 node * current = l->root->next;
158while(current != l->tail)
159163 printf("\n"
);164
}165
166#endif
雙向鍊錶(自己寫的c 類)
uva還是上不去t t哭瞎了。只好老老實實的研究上回買的書了。寫得有點長。好吧,我只是來複習c 類的。特意用class 而不用struct寫鍊錶。資料結構還沒學。雙向鍊錶就當先預習了。大神們輕噴。t t 有一些小球,從左到右依次編號為1,2,3 n 你可以執行兩種指令,其中a x y表示把小球x移動...
List雙向鍊錶
include 宣告 list int mylist 定義 mylist.push front 1 頭部插入元素 mylist.push back 2 尾部插入元素 pop front 移除頭部元素 pop back 移除尾部元素 list int iterator lter 迭代器定義 iter ...
List 雙向鍊錶
list是一種雙向鍊錶結構,可以從第乙個元素開始刪除 插入,也可以從最後乙個元素刪除 插入,下面介紹一下 list 中常用的幾個函式 一 list 中的 begin 和 end 函式 和其他幾種資料結構差不多,都是用來從第乙個元素,訪問到最後乙個元素,返回的是當前指標 listl l.begin 輸...