单链表逆转,用三个指针实现,但是在链表为空时,显示段错误,为什么,该怎么改呢?
struct ListNode *reverse( struct ListNode *head )
{
struct ListNode *p ,*q, *h;
h=head;
q=p=head->next;
h->next=NULL;
if(head!=NULL)
{
while(p != NULL) {
q=q->next;
p->next = h;
h=p;
p = q;
}
return h;
}
else
return head;
}
你的代码第 5 行,head 为NULL了,能那么引用?
struct ListNode* reverseList(struct ListNode* head) {
struct ListNode* prev = NULL;
struct ListNode* curr = head;
struct ListNode* next = NULL;
while (curr != NULL) {
next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
return prev;
}
数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633