linklist.h
#include #include//鍊錶小結點
typedef struct
linknode
linknode;
//鍊錶結點
typedef struct
linklist
linklist;
//遍歷結點的函式指標
typedef void(*printlinknode)(linknode*);
//比較函式指標
typedef int(*comparenode)(linknode*, linknode*);
//初始化鍊錶
linklist*init_linklist();
//根據位置插入語乙個結點
void insert_linklist(linklist* list, int pos, linknode*data);
//根據位置刪除乙個結點
void removebypos_linklist(linklist* list, int
pos);
//查詢結點
int find_linklist(linklist* list, linknode*data, comparenode compare);
//返回鍊錶的大小
int size_linklist(linklist*list);
//列印鍊錶
void print_linklist(linklist*list, printlinknode print);
//釋放記憶體
void freemem_linklist(linklist* list);
linklist.cpp
#include "linklist.h"//
初始化鍊錶
linklist*init_linklist()
//根據位置插入語乙個結點
void insert_linklist(linklist* list, int pos, linknode*data)
if (pos < 0 || pos >= list->size)
linknode* pcurrent = &(list->head);
for (int i = 0; i < pos; i++)
data->next = pcurrent->next;
pcurrent->next =data;
list->size++;}//
根據位置刪除乙個結點
void removebypos_linklist(linklist* list, int
pos)
if (pos < 0 || pos >= list->size)
linknode* pcurrent = &(list->head);
for (int i = 0; i < pos; i++)
pcurrent->next = pcurrent->next->next;
list->size--;}//
查詢結點
int find_linklist(linklist* list, linknode*data, comparenode compare)
int flag = -1
;
int index = 0
; linknode* pcurrent = list->head.next;
while (pcurrent !=null)
pcurrent = pcurrent->next;
index++;
}return
flag;}//
返回鍊錶的大小
int size_linklist(linklist*list)
return list->size;}//
列印鍊錶
void print_linklist(linklist*list, printlinknode print)
linknode* pcurrent = list->head.next;
while (pcurrent !=null)
}//釋放記憶體
void freemem_linklist(linklist*list)
free
(list);
}
main.cpp
#include "linklist.h
"typedef
struct
personperson;
void myprint(linknode*data)
int mycompare(linknode* node1, linknode*node2)
return -1;}
intmain()
鍊錶 單向鍊錶
討論單鏈表之前,我們先來討論下面這個問題。順序表存在的一些問題 中間 頭部的插入刪除,時間複雜度為o n 增容需要申請新空間,拷貝資料,釋放舊空間。會有不小的消耗。增容一般是呈2倍的增長,勢必會有一定的空間浪費。例如當前容量為100,滿了以後增容到200,我們再繼續插入了5個資料,後面沒有資料插入了...
鍊錶(單向鍊錶,雙向鍊錶)
首先鍊錶是以節點的方式儲存資料的,每個節點包含資料域 data 節點域 next 鍊錶的每個節點在計算機中儲存的位置是不連續的和隨機的,優點就是資料的插入和刪除比較好,而查詢資料效率不是太好 因為鍊錶無法像靜態資料一樣隨機讀取資料,必須按照順序找到對應的資料為止 單向鍊錶就像是火車,所有的節點串聯成...
C實現單向鍊錶(創造鍊錶)
include include typedef struct nodenode,pnode pnode create list void intmain pnode create list void pnode ptail phead 首尾同一節點 鍊錶 頭尾節點都應該在最開始就定義出來,頭就是第乙...