鍊錶的常見實現

2021-08-01 04:11:38 字數 1730 閱讀 8798

鍊錶結點宣告如下:

[cpp]view plain

copy

struct

linklist ;  

以下是不帶頭結點的單鏈表的操作。

將輸入的節點插入到鍊錶頭部。

[cpp]view plain

copy

//根據輸入建立單鏈表:鍊錶頭部插入

linklist *buildlist()   

new_node->value = data;  

if(head == null)   

else

}  return

head;  

}  

鍊錶插入時注意當鍊表為空的情況。

[cpp]view plain

copy

//在鍊錶頭部插入節點

linklist *inserttohead(int

value, linklist *head)   

new_node->value = value;  

new_node->next = null;  

if(head == null)   

else

return

head;  

}  

[cpp]view plain

copy

//鍊錶尾部插入節點

linklist *inserttotail(int

value, linklist *head)   

new_node->value = value;  

new_node->next = null;  

if(head == null)  

head = new_node;  

else

return

head;  

}  

注意當鍊表僅有乙個節點時的刪除。

[cpp]view plain

copy

//刪除某節點

linklist *deletebyvalue(int

value, linklist* head)   

else

}  if(ptodelete != null)   

return

head;  

}  

注意檢查鍊錶是否為空。時間複雜度為o(n)。該操作不用特意檢查鍊錶是否為空,如下**,鍊錶為空會返回0

[cpp]view plain

copy

unsigned 

intlength(linklist *head)   

return

length;  

}  

[cpp]view plain

copy

//列印單鏈表

void

printlist(linklist *head) {  

linklist *p = head;  

while

(p) {  

printf("%d "

, p->value);  

p = p->next;  

常見的鍊錶題目

一些常見的單鏈表題目,總結思路和實現 1.單鏈表的反序 2.給單鏈表建環 3.檢測單鏈表是否有環 4.給單鏈表解環 5.檢測兩條鍊錶是否相交 6.不輸入頭節點,刪除單鏈表的指定節點 只給定待刪除節點指標 1.單鏈表的反序 view plain 逆轉鍊錶,並返回逆轉後的頭節點 node reverse...

常見的鍊錶題目

分類 演算法 資料結構 一些常見的單鏈表題目,總結思路和實現 1.單鏈表的反序 2.給單鏈表建環 3.檢測單鏈表是否有環 4.給單鏈表解環 5.檢測兩條鍊錶是否相交 6.不輸入頭節點,刪除單鏈表的指定節點 只給定待刪除節點指標 1.單鏈表的反序 view plain 逆轉鍊錶,並返回逆轉後的頭節點 ...

鍊錶的常見操作

include include includeusing namespace std typedef struct nodetype node typedef struct dnodetype dnode 建立單鏈表 node createlist node head node current he...