linklist.h
1linklist.c#ifndef linklist_h
2#define linklist_h
34 #include5 #include6 #include 78
9//鍊錶小結點
10 typedef struct
linknode linknode;
1314
//鍊錶結點
15 typedef struct
linklist linklist;
19//
遍歷函式指指標
20 typedef void(*printnode)(linknode*);
21//
比較函式指標
22 typedef int(*comparenode)(linknode*, linknode*);
2324
//初始化鍊錶
25 linklist*init_linklist();
26//
插入27
void insert_linklist(linklist* list, int pos, linknode*data);
28//
刪除29
void remove_linklist(linklist* list, int
pos);
30//
查詢31
int find_linklist(linklist* list, linknode*data,comparenode compare);
32//
返回鍊錶大小
33int size_linklist(linklist*list);
34//
列印35
void print_linklist(linklist*list, printnode print);
36//
釋放鍊錶記憶體
37void freespace_linklist(linklist*list);
3839
4041
42#endif
1 #include"main.clinklist.h"2
3//初始化鍊錶
4 linklist*init_linklist()
10//
插入11
void insert_linklist(linklist* list, int pos, linknode*data)
17if (data ==null)
20if (pos < 0 || pos >= list->size)
23//
查詢插入位置
24 linknode* pcurrent = &(list->head);
25for (int i = 0; i < pos; i++)
28//
插入新結點
29 data->next = pcurrent->next;
30 pcurrent->next =data;
3132 list->size++;33}
34//
刪除35
void remove_linklist(linklist* list, int
pos)
40if (pos < 0 || pos >= list->size)
43//
輔助指標變數
44 linknode* pcurrent = &(list->head);
45for (int i = 0; i < pos; i++)
48//
刪除結點
49 pcurrent->next = pcurrent->next->next;
5051 list->size--;
5253}54
//查詢
55int find_linklist(linklist* list, linknode*data, comparenode compare)
60if (data ==null)
63//
輔助指標變數
64 linknode* pcurrent = list->head.next;
65int index = 0;66
int flag = -1;67
while (pcurrent !=null)
7374 pcurrent = pcurrent->next;
75 index++;76}
77return
flag;78}
79//
返回鍊錶大小
80int size_linklist(linklist*list)
83//
列印84
void print_linklist(linklist*list, printnode print)
88//
輔助指標變數
89 linknode* pcurrent = list->head.next;
90while (pcurrent !=null) 94}
95//
釋放鍊錶記憶體
96void freespace_linklist(linklist*list)
100free
(list);
101 }
1vs2015執行結果:#define _crt_secure_no_warnings
2 #include3 #include4 #include
5 #include"
linklist.h"6
7 typedef struct
person person;
1213
void myprint(linknode*data)
1718
int mycompare(linknode* nodel1, linknode*nodel2)
24return -1;25
}262728
intmain()
29
14 反轉鍊錶
test list oper created by hugo cao on 15 7 6.題目 反轉鍊錶 伴隨著大量的指標操作,3個指標,複雜度o n 反轉鍊錶,三個指標,遍歷一次。lnode secondreseverlist lnode head lnode p head null 返回的頭節點...
迴圈鍊錶企業鍊錶
一 特點 讓鍊錶的最後乙個結點的next指標指向頭結點。初始化小節點時直接讓next指標指向鍊錶的頭結點。二 include include include 小結點 typedef struct listnode listnode 鍊錶結點 typedef struct circularlist c...
C 企業 鍊錶
include using namespace std class linked typedef void print linked 列印方法函式型別 class linkestruct class teacher linkestruct linkestruct linkestruct linkes...