头插法(有头指针,迭代)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
void list_revert(Node *head) {
if (!head)
return -1;
Node *p, *q;
p = head->next;
head->next = NULL;
while (p) {
q = p;
p = p->next;

q->next = head->next;
head->next = q;
}
}

就地逆置法

1
2
3
4
5
6
7
8
9
10
Node *list_revert(Node *head) {
if (head == NULL || head->next == NULL)
return head;
Node *pRev = NULL;
Node *pCur = head;
whiel (pCur != NULL) {
Node *tmp = pCur;
p
}
}