反转链表

题目描述

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

首先定义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;

    }
};


阅读更多
上一篇链表中倒数第k个结点
下一篇树的子结构
想对作者说点什么? 我来说一句

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

关闭
关闭
关闭