题目:将链表LA分解成两个链表,LA中存放序号为奇数的元素,LB中存放序号为偶数的元素,然后分别用头指针head1,head2指向LA,LB两个链表。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList CreateList(LinkList &L){
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
LNode *p = L,*node;
for(int i=0;i<10;i++){
node = (LNode*)malloc(sizeof(LNode));
node->data = i;
node->next = NULL;
p->next = node;
p = p->next;
}
return L;
}
LinkList SplitList(LinkList &LA){
LinkList head1 = LA;
LinkList LB = (LinkList)malloc(sizeof(LNode));
LB->next = NULL;
LinkList head2 = LB;
LNode *p = head1->next;
int k=0;
while(p){
if(k%2==0){
head1->next = p;
head1 = head1->next;
p = p->next;
}else{
head2->next = p;
head2 = head2->next;
p = p->next;
}
k++;
}
head1->next=NULL;
head2->next=NULL;
return LB;
}
void printList(LinkList L){
LNode *p = L->next;
while(p){
printf("%d ",p->data);
p = p->next;
}
}
int main(){
LinkList head1,head2;
CreateList(head1);
printf("原LA:");
printList(head1);
printf("\n");
head2=SplitList(head1);
printf("存放偶数的LA(head1):");
printList(head1);
printf("\n");
printf("存放奇数的LB(head2):");
printList(head2);
printf("\n");
}