链表反转???

借助指针?

#include <iostream>
using namespace std;

struct LinkNode{
    int val;
    LinkNode* next;
    LinkNode(int v):val(v),next(NULL){};
};

class solution{
    public:
        LinkNode* reverse(LinkNode* head){
            if(head == NULL) return NULL;

            LinkNode* p = NULL;
            LinkNode* q = NULL;
            p = head->next;

            head->next = NULL;
            while(p){
                q = p->next;
                p->next = head;
                head = p;
                p = q;
            }
            return head;
        }

        void Print(LinkNode* head){
            if(head == NULL) return;
            LinkNode* p = NULL;
            p = head;
            while(p){
                cout<<p->val<<"  ";
                p = p->next;
            }
            cout<<endl;
        }
};

int main(){
    LinkNode node(5);
    node.next = new LinkNode(6);
    node.next->next = new LinkNode(7);
    solution s;
    s.Print(&node);
    LinkNode* p=s.reverse(&node);
    s.Print(p);
}
View Code

猜你喜欢

转载自www.cnblogs.com/bailuoxi/p/12571361.html