leetcode-143. 重排链表
题目:
代码:
#include <iostream>
#include <vector>
using namespace std;
typedef struct ListNode{
int val;
struct ListNode *next;
}ListNode,*LinkList;
void initList(LinkList &head){
head=new ListNode();
int n;
cin>>n;
ListNode *r=head;
for(int i=0;i<n;i++){
ListNode *p=new ListNode();
cin>>p->val;
p->next=NULL;
r->next=p;
r=p;
}
}
void reorderList(ListNode* head) {
if(!head){
return;
}
vector<ListNode *>v;
ListNode *h=head;
while(h){
v.push_back(h);
h=h->next;
}
int i=0,j=v.size()-1;
while(i<j){
v[i]->next=v[j];
i++;
if(i==j){
break;
}
v[j]->next=v[i];
j--;
}
v[i]->next=NULL;
}
int main(){
LinkList head;
initList(head);
reorderList(head);
return 0;
}