编写自定义函数:建立一个带有头结点head的有20个结点的链表,20个结点所需数值由随机数产生。
编写自定义函数:建立两个链表,把存有数据的链表中的偶数存入一个链表,奇数存入另一个链表中。
编写主函数调用上述两个函数并可输出三个链表中的数据。
完整的代码如下:
#include "iostream"
usingnamespacestd;
#include "time.h"
structnode
{
intdata;
node *next;
};
node *head=NULL;
voidInsertNode(node* &head,intvalue)
{
if(head==NULL)
{
head=(node *)malloc(sizeof(node));
if(head==NULL)
{
printf("malloc failed");
return;
}
else
{
head->data=value;
head->next=NULL;
}
}
else
{
node *temp=(node *)malloc(sizeof(node));
if(temp==NULL)
{
printf("malloc failed");
return;
}
else
{
temp->data=value;
temp->next=head;
head=temp;
}
}
return;
}
voidInsert(intn)
{
srand( (unsigned)time( NULL ) );//初始化随机数
for(inti=0;i
InsertNode(head,rand());
node *p=(node *)malloc(sizeof(node));
p->next=head;
head=p;
printf("所有的随机数为: ");
p=head->next;//输出测试
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("/n/n");
return;
}
voidodd_even()
{
node *p=head->next;
node *head_odd,*head_even,*q,*t;
head_odd=NULL;
head_even=NULL;
while(p)
{
if(p->data%2==0)
{
if(head_even==NULL)
{
head_even=(node *)malloc(sizeof(node));
if(head_even==NULL)
{
printf("malloc failed");
return;
}
else
{
head_even->data=p->data;
head_even->next=NULL;
q=head_even;
}
}
else
{
node *temp=(node *)malloc(sizeof(node));
if(temp==NULL)
{
printf("malloc failed");
return;
}
else
{
temp->data=p->data;
q->next=temp;
temp->next=NULL;
q=q->next;
}
}
}
else
{
if(head_odd==NULL)
{
head_odd=(node *)malloc(sizeof(node));
if(head_odd==NULL)
{
printf("malloc failed");
return;
}
else
{
head_odd->data=p->data;
head_odd->next=NULL;
t=head_odd;
}
}
else
{
node *temp=(node *)malloc(sizeof(node));
if(temp==NULL)
{
printf("malloc failed");
return;
}
else
{
temp->data=p->data;
t->next=temp;
temp->next=NULL;
t=t->next;
}
}
}
p=p->next;
}
q=head_even;
t=head_odd;
printf("其中偶数为: ");
while(q)
{
printf("%d ",q->data);
q=q->next;
}
printf("/n/n");
printf("其中奇数为: ");
while(t)
{
printf("%d ",t->data);
t=t->next;
}
printf("/n/n");
}
intmain(void)
{
Insert(20);
odd_even();
system("pause");
return0;
}
#include "iostream"
using namespace std;
#include "time.h"
struct node
{
int data;
node *next;
};
node *head=NULL;
void InsertNode(node* &head,int value)
{
if(head==NULL)
{
head=(node *)malloc(sizeof(node));
if(head==NULL)
{
printf("malloc failed");
return ;
}
else
{
head->data=value;
head->next=NULL;
}
}
else
{
node *temp=(node *)malloc(sizeof(node));
if(temp==NULL)
{
printf("malloc failed");
return ;
}
else
{
temp->data=value;
temp->next=head;
head=temp;
}
}
return ;
}
void Insert(int n)
{
srand( (unsigned)time( NULL ) ); //初始化随机数
for(int i=0;i
InsertNode(head,rand());
node *p=(node *)malloc(sizeof(node));
p->next=head;
head=p;
printf("所有的随机数为: ");
p=head->next; //输出测试
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("/n/n");
return ;
}
void odd_even()
{
node *p=head->next;
node *head_odd,*head_even,*q,*t;
head_odd=NULL;
head_even=NULL;
while(p)
{
if(p->data%2==0)
{
if(head_even==NULL)
{
head_even=(node *)malloc(sizeof(node));
if(head_even==NULL)
{
printf("malloc failed");
return ;
}
else
{
head_even->data=p->data;
head_even->next=NULL;
q=head_even;
}
}
else
{
node *temp=(node *)malloc(sizeof(node));
if(temp==NULL)
{
printf("malloc failed");
return ;
}
else
{
temp->data=p->data;
q->next=temp;
temp->next=NULL;
q=q->next;
}
}
}
else
{
if(head_odd==NULL)
{
head_odd=(node *)malloc(sizeof(node));
if(head_odd==NULL)
{
printf("malloc failed");
return ;
}
else
{
head_odd->data=p->data;
head_odd->next=NULL;
t=head_odd;
}
}
else
{
node *temp=(node *)malloc(sizeof(node));
if(temp==NULL)
{
printf("malloc failed");
return ;
}
else
{
temp->data=p->data;
t->next=temp;
temp->next=NULL;
t=t->next;
}
}
}
p=p->next;
}
q=head_even;
t=head_odd;
printf("其中偶数为: ");
while(q)
{
printf("%d ",q->data);
q=q->next;
}
printf("/n/n");
printf("其中奇数为: ");
while(t)
{
printf("%d ",t->data);
t=t->next;
}
printf("/n/n");
}
int main(void)
{
Insert(20);
odd_even();
system("pause");
return 0;
}
运行的结果如下: