将一个带头结点的单链表按序号的奇偶分为两个链表:headA,headB,并保持顺序不变.
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int data;
struct node* next;
}LinkList;
LinkList* CreaList()
{
LinkList*head,*r,*s;
head = (struct LinkList*)malloc(sizeof (LinkList));
r = head;
int x;
scanf("%d",&x);
while(x != -100)
{
s = (struct LinkList*)malloc(sizeof (LinkList));
s->data = x;
r->next = s;
r = s;
scanf("%d",&x);
}
r->next = NULL;
return head;
}
void PrintList(LinkList* head)
{
LinkList* p = head;
p = p->next;
while(p!=NULL)
{
printf("%d ",p->data);
p = p->next;
}
printf("\n");
return 0;
}
LinkList* Selet(LinkList* head)
{
LinkList* r,*s,*cur;
int i = 0;
LinkList* headB = (struct LinkList*)malloc(sizeof(LinkList));
r = head;
s = headB;
cur = head->next;
r->next = NULL;
while(cur !=NULL)
{
i++;
if(i%2!=0)
{
r->next = cur;
r = cur;
}
else
{
s->next = cur;
s = cur;
}
cur = cur->next;
}
r->next = NULL;
s->next = NULL;
return headB;
}
int main()
{
LinkList* head,*headA,*headB;
head = CreaList();
PrintList(head);
PrintList(head);
PrintList(headB);
return 0;
}