题目:
输入一个链表,反转链表后,输出链表的所有元素。
解法:头插法,新建一个链表,千万不能是指向之前链表的头结点!自己新建一个头结点!
ListNode* ReverseList(ListNode* pHead) {
if(pHead==NULL)
return NULL;
ListNode* p=pHead,newHead(0);
ListNode* pNew=&newHead;
while(p)
{
ListNode* temp=pNew->next;
pNew->next=p;
p=p->next;
pNew->next->next=temp;//接上之前东西
}
return pNew->next;
}
总结:
新造链表指针一定要避免头结点指针死循环!头结点指向他自身头结点很容易就会出现死循环!千万不要是新造一个心的链表的头结点初始化为之前链表的头结点,很容易出现出问题,反正对于操作链表一定要小心,因为操作的都是地址,各种指向一定要小心,每一步都要思考!