資料結構 鍊錶篇

2021-10-04 05:23:06 字數 2151 閱讀 4142

鍊錶的優點:

插入和刪除速度快

記憶體利用率高

可以隨時擴充套件,不必擔心儲存滿

鍊錶的缺點:

不能隨機查詢,只能通過從頭乙個乙個找,查詢效率低

實現如下:

#include

#include

typedef

struct node

node;

//函式宣告

node*

head_create_list()

;//頭插法建立鍊錶

node*

end_create_list()

;//尾插法建立鍊錶

void

insert

(node *phead,

int address,

int val)

;//插入節點

void

removes

(node *phead,

int address,

int*removeitem)

;//刪除節點

void

sort

(node *phead)

;//排序

void

show

(node *head)

;//輸出鍊錶的所有元素

intnumber

(node *head)

;//判斷鍊錶裡面元素的個數

void

main()

}}//頭插法

node*

head_create_list()

for(i=

1; i<=size; i++

) pnew->data = val;

pnew->pnext = phead->pnext;

phead->pnext = pnew;

}printf

("頭插法鍊錶建立成功!\n\n");

return phead;

}//尾插法

node*

end_create_list()

for(i=

1; i<=size; i++

) pnew->data = val;

p->pnext = pnew;

pnew->pnext =

null

; p = pnew;

}printf

("尾插法鍊錶建立成功!\n\n");

return phead;

}//插入節點

void

insert

(node *phead,

int address,

int val)

else

pnew->data = val;

pnew->pnext = p->pnext;

p->pnext = pnew;}}

//刪除節點

void

removes

(node *phead,

int address,

int*removeitem)

else

if(address>

number

(phead)

|| address <=0)

for(i=

0; i)else

} p1->pnext = p2->pnext;

p2->pnext =

null

;*removeitem = p2->data;

free

(p2);}

//排序

void

sort

(node *phead)

else}}

printf

("排序成功!\n\n");

}}//輸出鍊錶的所有元素

void

show

(node *phead)

else

printf

("\n\n");

}}//返回當前鍊錶中節點的個數

intnumber

(node *phead)

while

(p->pnext !=

null

)return num;

}

資料結構與演算法 鍊錶篇

鍊錶屬於線性結構之一,主要功能是提供可動態擴充套件的線性結構,可使用不連續的的記憶體空間,為程式的動態特性提供支援。邏輯結構如下 引用自csdn部落格 一般的定義如下 the data structure of link list typedef int datatype typedef struc...

C 資料結構篇(鍊錶類)

首先定義結點型別,定義了,前乙個指標域,後乙個指標域,如下 using system namespace list 前乙個public listnode previous 後乙個public listnode next 值public int value using system namespace...

資料結構與演算法 鍊錶篇

反轉鍊錶這道演算法題應該算是所有鍊錶題的底層了,所以一定要理解掌握這道題 下面展示一些內聯 片。判斷鍊錶head或head.next是否為空,為空返回鍊錶head if head null head.next null 當前節點的前乙個節點 listnode pre null 當前節點 listno...