单链表逆序
- 思想(方法一)
- 头插法
- 迭代
ListNode* reverseList(ListNode* head) {
ListNode *prev = NULL, *cur=head, *tmp;
while(cur){
tmp = cur->next;
cur->next = prev;//插入头部
prev = cur; //运用迭代思想。
cur = tmp;
}
return prev;
}
理解参考详细理解请点击
- 方法二(思想递归)【不常用】
ListNode* reverseList(ListNode* head) {
if(!head || !(head->next)) return head;
auto res = reverseList(head->next);
head->next->next = head;
head->next = NULL;
return res;
}
删除链表的当前节点
- -
void deleteNode(struct ListNode* node) {
struct ListNode* next = node->next;
*node = *next;
free(next);
}
后续再加。。。。。