链表的反转

来源:互联网 发布:淘宝买刺刀 编辑:程序博客网 时间:2024/05/16 10:22

LinkedList ReverseList(Node *head){    Node *NewHead = NULL;    Node *p1, *p2, *tmp;    if(head == NULL)        return NULL;    if(head)    {        p1 = head;        p2 = head->next;    }    while(p2)    {        tmp = p2->next;        p2->next = p1;        p1 = p2;        p2 =tmp;    }    head->next = NULL;    NewHead = p1;    return NewHead;}


还有一种方法:

就是新建一个头结点,头结点的next指向NULL,每次在新建头结点和头结点的next之间插入结点,一直这样...

/*struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}};*/class Solution {public:    ListNode* ReverseList(ListNode* pHead) {ListNode *head = (ListNode*)malloc(sizeof(ListNode));        ListNode *p;        head->next = NULL;        while(pHead){            p = pHead;            pHead = pHead->next;            p->next = head->next;            head->next = p;                    }        return head->next;    }};


0 0
原创粉丝点击