leetcode- 328. 奇偶链表
题目
代码
#include <iostream>
#include <vector>
using namespace std;
typedef struct ListNode{
int val;
struct ListNode *next;
}ListNode, *LinkList;
void create(LinkList &head){
int n;
cin>>n;
head = new ListNode;
head->next = NULL;
ListNode *tail = head;
for(int i = 0; i < n; i++){
ListNode *p = new ListNode;
cin>>p->val;
p->next = NULL;
tail->next = p;
tail = p;
}
}
ListNode* oddEvenList(ListNode* head) {
if(!head || !head->next || !head->next->next){
return head;
}
ListNode *oddHead = new ListNode;
oddHead->next = NULL;
ListNode *oddTail = oddHead;
ListNode *evenHead = new ListNode;
evenHead->next = NULL;
ListNode *evenTail = evenHead;
int i = 0;
while(head){
ListNode *p = new ListNode;
p->val = head->val;
p->next = NULL;
if(i % 2 == 0){
oddTail->next = p;
oddTail = p;
}else{
evenTail->next = p;
evenTail = p;
}
i++;
head = head->next;
}
oddTail->next = evenHead->next;
return oddHead->next;
}
int main(){
ListNode *head, *res;
create(head);
head = head->next;
res = oddEvenList(head);
while(res){
cout<<res->val<<" ";
res = res->next;
}
return 0;
}