LeetCode---Reorder List

来源:互联网 发布:航天科工33所 知乎 编辑:程序博客网 时间:2024/06/06 03:18

题目大意:给出一个链表,将链表的首尾节点相邻组成一个新链表。

算法思想:

1.遍历链表,将链表中的节点存放如容器中。

2.遍历容器,交替从容器首尾中取出节点,组成一个链表。

3.去掉添加的头结点。

代码如下:

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    void reorderList(ListNode* head) {        if(head==NULL) return ;        ListNode* p=head;        deque<ListNode*> Node;        while(p!=NULL){        cout<<p->val<<endl;            Node.push_back(p);            p=p->next;        }        deque<ListNode*>::iterator pos;        ListNode *wzg=new ListNode(0);        p=wzg;        bool flag=true;        cout<<"size:"<<Node.size()<<endl;        while(!Node.empty()){            if(flag){                p->next=Node.front();                Node.pop_front();                              flag=false;            }                              else{                p->next=Node.back();                Node.pop_back();                flag=true;            }            p=p->next;        }        if(p!=NULL) p->next=NULL;        head=wzg->next;        delete wzg;    }};


0 0
原创粉丝点击