1、将原链表中的数值,按照奇偶分配
2.将奇偶链表合并
/**

  • struct ListNode {

  • int val;

  • struct ListNode *next;

  • ListNode(int x) : val(x), next(nullptr) {}

  • };

  • /
    class Solution {
    public:
    /**

    • 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可

    • @param head ListNode类

    • @return ListNode类

    • /
      ListNode* oddEvenList(ListNode* head) {
      // write code here
      int i=0;
      //伪头指针
      ListNode* H=new ListNode(-1);
      vector<ListNode> odd;
      vector<ListNode
      >even;
      while(head)
      {

        i++;
        ListNode* p=head;
        head=head->next;

      //防止链表重叠

        p->next=NULL;
        //偶节点
        if(i%2==0)
        {
            even.push_back(p);
        }
        //偶节点
        else
        {
            odd.push_back(p);
        }

      }
      //将偶节点链表链接到奇节点末尾
      odd.insert(odd.end(), even.begin(),even.end());
      //odd.push_back(even.begin(),even.end());
      ListNode* R=H;
      //输出
      for(int i=0;i<odd.size();i++ )
      {

        H->next=odd[i];
        H=H->next;

      }
      return R->next;
      }
      };