反转链表

题目描述

输入一个链表,反转链表后,输出链表的所有元素。

首先定义newH=null,*p1=3为头指针。储存下一个节点temp=p1->next;

然后3成为新链表的表尾,指向空,有p1->next=newH,此时,表头为newH,newH=p1,然后处理下一个节点,p1=temp;


这是一步的结果,最终得到


/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
        if(pHead==NULL||pHead->next==NULL)
            return pHead;
        ListNode* p1=pHead;
        ListNode* newH=NULL;
        while(p1)
        {
            ListNode* temp=p1->next;  //临时存放下一个节点
            p1->next=newH;            //链表翻转
            newH=p1;                  //新链表
            p1=temp;
        }
        return newH;

    }
};


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页