鍊錶結點宣告如下:
[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...