Code:
/*Viet chuong trinh tach mot danh sach thanh 2 danh sach:
- Mot toan so chan
- Mot toan so le */
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
struct node
{
int info;
struct node *next;
};
typedef node *NODEPTR;
NODEPTR First, First1, First2;
void Initialize(NODEPTR &First)
{
First = NULL;
}
NODEPTR New_node()
{
NODEPTR p;
p = (NODEPTR)malloc(sizeof(struct node));
return p;
}
void Creat_list(NODEPTR &First, int n)
{
NODEPTR p;
int i = 0;
Initialize(First);
randomize();
while(i < n)
{
if(First == NULL)
{
p = New_node();
First = p;
}
else
{
p->next = New_node();
p = p->next;
}
p->info = random(100);
p->next = NULL;
i++;
}
}
void Traverse(NODEPTR First)
{
NODEPTR p;
p = First;
while(p != NULL)
{
printf("\n%d",p->info);
p = p->next;
}
}
void Traverse1(NODEPTR First1)
{
NODEPTR p;
p = First1;
while(p != NULL)
{
printf("\n%d",p->info);
p = p->next;
}
}
void Traverse2(NODEPTR First2)
{
NODEPTR p;
p = First2;
while(p != NULL)
{
printf("\n%d",p->info);
p = p->next;
}
}
void Clear_list(NODEPTR &First)
{
NODEPTR p;
while(First != NULL)
{
p = First;
First = p->next;
free(p);
}
}
void Tach(NODEPTR &First, NODEPTR &First1, NODEPTR &First2)
{
NODEPTR p, p1, p2; //First1 chan, First2 le
First1 = New_node();
First2 = New_node();
p1 = First1;
p2 = First2;
p = First;
while(p != NULL)
{
if(p->info % 2 == 0)
{
p1->next = p;
p1 = p;
}
else
{
p2->next = p;
p2 = p;
}
p = p->next;
}
p1 = First1;
First1 = p1->next;
free(p1);
p2 = First2;
First2 = p2->next;
free(p2);
Clear_list(First);
}
void main()
{
clrscr();
int n;
printf("Nhap so phan tu cua danh sach: "); scanf("%d",&n);
Creat_list(First, n);
Traverse(First);
Tach(First, First1, First2);
printf("\nDanh sach 1: "); Traverse1(First1);
printf("\nDanh sach 2: "); Traverse2(First2);
getch();
}
các bạn ơi xém giúp mình hàm Tach với? Và cho mình hỏi cỏn trỏ và biến con trỏ khác nhau thế nào?