c語言單鏈表增刪查

2021-08-23 15:17:07 字數 2563 閱讀 9623

#ifndef _linklist_h_

#define _linklist_h_

#include

#include

#include

#include

typedef unsigned char datatype;

typedef struct node

linknode;

linknode* createlink(datatype* pch);

linknode* findlinke(linknode* head, int npos);

void insertlinke(linknode* head, int npos, datatype insertdata);

void deletelinke(linknode* head, int npos);

void finddata(linknode* head, datatype ch);

void initdata(linknode arrnode, datatype* cdata, int arrlen);

void compareeffic(datatype* pch, datatype ch);

#endif

/*建立結點

*/linknode* createlink(datatype* pch)

else

p1->next = null;

p2 = p1;

++pch;

}return head;}/*

查詢結點

*/linknode* findlinke(linknode* head, int npos)

if(i == npos)//此時找到要找的結點

return null;}/*

插入結點

*/void insertlinke(linknode* head, int npos, datatype insertdata)

//生成插入的結點

linknode* s = (linknode*)malloc(sizeof(linknode));

//初始化當前結點

s->c = insertdata;

s->next = p1->next;//將s成員中的next指向將p1的後乙個結點

p1->next = s;}/*

刪除結點

*/void deletelinke(linknode* head, int npos)

//找到刪除結點的上乙個結點

if(npos < 1) return;

linknode* p1 = findlinke(head, npos - 1);

if(null != p1)

free(delnode);//必須釋放}/*

比較一下陣列查詢和鍊錶查詢效率問題

相同資料

*/void compareeffic(datatype* pch, datatype ch)

;linknode* head = createlink(pch);

initdata(arrnode, pch, 255);

//查詢鍊錶

time_t t_link1 = time(null);

tm* tm_link1 = localtime(&t_link1);

int mill1 = tm_link1->tm_sec * 1000;

finddata(head, ch);//查詢元素位於結點上

time_t t_link2 = time(null);

tm* tm_link2 = localtime(&t_link2);

int mill2 = tm_link2->tm_sec * 1000;

//時間之差

int link_result = mill2 - mill1;

//查詢陣列

time_t t_array1 = time(null);

tm* tm_array1 = localtime(&t_array1);

int millarray1 = tm_array1->tm_sec * 1000;

for(int i = 0;i < 1000;++i)

}time_t t_array2 = time(null);

tm* tm_array2 = localtime(&t_array2);

int millarray2 = tm_array2->tm_sec * 1000;

//時間之差

int arr_result = millarray2 - millarray1;

if(arr_result < link_result)

else}/*

初始化陣列資料

*/void initdata(linknode arrnode, datatype* cdata, int arrlen)}/*

查詢指定資料

*/void finddata(linknode* head, datatype ch)

head = head->next;

++i;}}

C語言單鏈表 增刪查

廢話不多說直接看 內建詳細注釋 結點結構 typedef struct node node,linklist 起別名,乙個正常別名,乙個指標別名 單鏈表查詢演算法 linklist find list linklist l,int k if p i k return null 否則查詢元素不存在 單...

C語言單鏈表 增 刪 改 查

鍊錶是一種常見的基礎資料結構,結構體指標在這裡得到了充分的利用。鍊錶可以動態的進行儲存分配,也就是說,鍊錶是乙個功能極為強大的陣列,他可以在節點中定義多種資料型別,還可以根據需要隨意增添,刪除,插入節點。鍊錶都有乙個頭指標,一般以head來表示,存放的是乙個位址。鍊錶中的節點分為兩類,頭結點和一般節...

單鏈表增刪改查

include include include include using namespace std struct node node int x,node next null 帶參初始化 建立煉表頭結點,新增引用因為要改變指標的位址指向 void createlink node head 新增鍊...