前言:設計一支程式將鏈結串列分成基數串列和偶數串列
typedef struct node{
int data;
struct node *next;
}NODE;
int countList(NODE *head);
void reverseList(NODE **head);
void split(NODE *head,NODE **h1,NODE **h2);
void printList(NODE *head);
void updateList(NODE *head);
NODE *head=NULL;
NODE *h1=NULL;
NODE *h2=NULL;
NODE A={3,NULL};
NODE B={4,NULL};
NODE C={5,NULL};
NODE D={7,NULL};
NODE E={8,NULL};
head=&A;
A.next=&B;
B.next=&C;
C.next=&D;
D.next=&E;
E.next=NULL;
printList(head);
split(head,&h1,&h2);
printList(h1);
printList(h2);
NODE *tail1=NULL, *tail2=NULL;
while(head!=NULL)
{
if((head->data)%2!=0)
{
if(*h1==NULL){
*h1=head;
head=head->next;
tail1=*h1;
tail1->next=NULL;
}else{
tail1->next=head;
head=head->next;
tail1=tail1->next;
tail1->next=NULL;
}
}else{
if(*h2==NULL){
*h2=head;
head=head->next;
tail2=*h2;
tail2->next=NULL;
}else{
tail2->next=head;
head=head->next;
tail2=tail2->next;
tail2->next=NULL;
}
}
}
int listcount=1;
struct node *P=head;
while(P->next!=NULL)
{
listcount++;
P=P->next;
}
NODE *p=*head;
NODE *q=*head;
p=p->next;
q->next=NULL;
while(p!=NULL)
{
q=p;
p=p->next;
q->next=*head;
*head=q;
}
struct node *P=head;
while(1)
{
P->data=(P->data==A_No)?Z_No:P->data;
if(P->next!=NULL)
P=P->next;
else
break;
}
struct node *P=head;
printf("Linked List data:");
while(1)
{
printf("%d",P->data);
if(P->next==NULL)
{
printf("\n");
break;
}
else
{
P=P->next;
printf("->");
}
}