完整代码
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
struct LNode *next;
int data;
}LNode;
//创建链表
struct LNode *Creatlist(){
LNode *head,*p,*s;
head=(LNode *)malloc(sizeof(LNode));
p=head;
head->next=NULL;
int x;
printf("请输入X的值:");
scanf("%d",&x);
while(1){//这里加while(1)是保证循环
if(x!=-1){
s=(LNode *)malloc(sizeof(LNode));
s->data=x;
p->next=s;
p=s;
printf("请输入X的值:");
scanf("%d",&x);
}else{
break;
}
}
p->next=NULL;
//定义的函数返回值类型为LNode
return head;
}
void printList(LNode *head){
LNode *p=head->next;
while(p){
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
//按单链表中的序数的奇偶性拆分
void SplitList(LNode *head){
LNode *p=head->next,*r=head,*s;
LNode *B=(LNode *)malloc(sizeof(LNode));
B->next=NULL;
LNode *q=B;
int i=1;
while(p){
if(i%2==0){
s=p->next;
q->next=p;
q=p;
p=s;
i++;
}
else{
s=p->next;
r->next=p;
r=p;
p=s;
i++;
}
}
r->next=NULL;
q->next=NULL;
printList(head);
printList(B);
}
int main(){
LNode *head1;
head1=Creatlist();
SplitList(head1);
return 0;
}
测试结果