C++实现链表反转

#include "stdio.h"
struct ListNode{
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};
class Solution{

public:
    ListNode* Reverse(ListNode *head){
        ListNode *new_head = NULL;
        while (head){
            ListNode *next = head->next;
            head->next=new_head;
            new_head=head;
            head=next;
        }
        return new_head;
    }
};

int main(){
ListNode a(1);
	ListNode b(2);
	ListNode c(3);
	ListNode d(4);
	ListNode e(5);
	a.next = &b;
	b.next = &c;
	c.next = &d;
	d.next = &e;
	Solution solve;	
	ListNode *head = &a;
	printf("Before reverse:\n");
	while(head){
		printf("%d\n", head->val);
		head = head->next;
	}
	head = solve.Reverse(&a);
	printf("After reverse:\n");
	while(head){
		printf("%d\n", head->val);
		head = head->next;
	}
	return 0;
}

  

posted @ 2022-10-16 21:50  极客船长  阅读(67)  评论(0编辑  收藏  举报