Mọi người cho em hỏi với. tại sao khi em in ra danh sách liên kết trường hợp để con trỏ *pdau là biến toàn cục thì in ra được. còn trường hợp e để *pdau là trong hàm main()
và truyền vào hàm nhập thì lại không in ra được.
Không in được:
#include<stdio.h>
#include<stdlib.h>
typedef struct SoNguyen
{
int dulieu;
struct SoNguyen *tiep;
}SoNguyen;
void taoDanhSach(SoNguyen *pdau,int x)
{
SoNguyen *p;
if(pdau == NULL)
{
pdau = (SoNguyen*)malloc(sizeof(SoNguyen));
p = pdau;
}
else
{
p = pdau;
while (p->tiep !=NULL)
p = p->tiep;
p->tiep = (SoNguyen*)malloc(sizeof(SoNguyen));
p = p->tiep;
}
p->dulieu = x;
p->tiep = NULL;
}
void inDanhSach(SoNguyen *pdau)
{
SoNguyen *p = pdau;
if(pdau == NULL)
return;
while(p != NULL)
{
printf("%d\t",p->dulieu);
p = p->tiep;
}
}
int main()
{
SoNguyen *pdau = NULL;
taoDanhSach(pdau,1);
inDanhSach(pdau);
return 0;
}
In được:
#include<stdio.h>
#include<stdlib.h>
typedef struct SoNguyen
{
int dulieu;
struct SoNguyen *tiep;
}SoNguyen;
SoNguyen *pdau = NULL;
void taoDanhSach(int x)
{
SoNguyen *p;
if(pdau == NULL)
{
pdau = (SoNguyen*)malloc(sizeof(SoNguyen));
p = pdau;
}
else
{
p = pdau;
while (p->tiep !=NULL)
p = p->tiep;
p->tiep = (SoNguyen*)malloc(sizeof(SoNguyen));
p = p->tiep;
}
p->dulieu = x;
p->tiep = NULL;
}
void inDanhSach()
{
SoNguyen *p = pdau;
if(pdau == NULL)
return;
while(p != NULL)
{
printf("%d\t",p->dulieu);
p = p->tiep;
}
}
int main()
{
taoDanhSach(1);
taoDanhSach(2);
inDanhSach();
return 0;
}