#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
struct Node{
int data;
Node* next;
};
void exchange(Node* &p1,Node* &p2){
Node* tmp=p1;
p1=p2;
p2=tmp;
}
void transform(Node* head,Node* &head1,Node* &head2){
if(head==NULL){
head1=head2=NULL;
return;
}
Node* n1=head,*n2=n1->next;
head1=n1,head2=n2;
//这儿设计的比较好,只需要两个指针不断的轮换,微软面试时自己写了四个指针的,感觉有些复杂
while(n2){
n1->next=n2->next;
n1=n1->next;
exchange(n1,n2);
}
}
Node* nd[10];
int main(){
for(int i=0;i<10;i++){
nd[i]=new Node();
nd[i]->data=i;
}
for(int i=0;i<9;i++)
nd[i]->next=nd[i+1];
nd[9]->next=NULL;
Node* p1,*p2;
p1=p2=NULL;
transform(nd[0],p1,p2);
while(p1){
cout<<p1->data<<" ";
p1=p1->next;
}
cout<<endl;
wh
链表拆成两个链表(奇数链和偶数链)
最新推荐文章于 2023-10-26 16:28:15 发布