14 企業鍊錶

2022-07-13 13:45:11 字數 3113 閱讀 2380

linklist.h

1

#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

linklist.c

1 #include"

linklist.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 }

main.c

1

#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

vs2015執行結果:

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...