#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 新增鍊...