我的思路是用头插法对链表进行逆置操作
typedef struct Node {
int val;
struct Node* next;
}Node, * ListNode;
ListNode reverseList(ListNode L) {
ListNode R, p, s,q;
R = (ListNode)malloc(sizeof(Node));
R->next = NULL;
p = L;
s = (Node*)malloc(sizeof(Node));
while (p) {
s = (Node*)malloc(sizeof(Node));
s->val = p->val;
s->next = R->next;
R->next = s;
p = p->next;
}
q = R->next;
return q;
}
如图,是一个定义好的链表,当链表发生逆置的时候,NULL也会被移动到首位,所以要加上
q = R->next这步,从第二个元素开始遍历