69,371
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
//*****结构体声明***********//
typedef struct Link_node
{
int infor;
struct Link_node *next;// 要加struct
}node;
//****函数实现部分******************//
//链表的初始化
node *init()
{
return NULL;
}
//链表的创建
node *creat(node *head)
{
int n,i;
node *p,*q;
p=(node*)malloc(sizeof(node));
head=p;
p->next=NULL;
printf("Please input Number length:");
scanf("%d",&n);
printf("Please input Number:");
for(i=0;i<n;i++)
{
q=(node*)malloc(sizeof(node));
p->next=q;
scanf("%d",&q->infor);
q->next=NULL;
p=q;
}
printf("\n");
return head;
}
//链表的奇数,偶数分离函数
node *apart(node *head,node *head2)
{
void Display(node *head);
node *p,*p2;
p = head;
head2 = (node*)malloc(sizeof(node));
head2->next = NULL;
p2 = head2;
while(p->next)//此逻辑改的比较多
{
if(p->next->infor%2)
{
p2->next = p->next;
p2 = p->next;
p->next = p->next->next;
p2->next = NULL;
continue;
}
p = p->next;
}
Display(head2);
return head;
}
//链表的输出
void Display(node *head)
{
node *p;
p=head->next;
while(p)
{
printf("%2d",p->infor);
p=p->next;
}
printf("\n");
}
void main()
{
node *head,*head2;
head=head2=init();
head=creat(head);
Display(head);
printf("**************************************\n");
//链表的奇数和偶数分离实现
head=apart(head,head2);
printf("\n");
Display(head);
}