chào các anh chị
em có đoạn code về link list như sau ạ :
#include <stdio.h>
#include <stdlib.h>
//1. khai bao cau truc du lieu danh sach lien ket don so nguyen
struct Node
{
int data ;
struct Node *pnext;
};
typedef struct Node NODE;
struct list
{
NODE *phead;
NODE *ptail;
};
typedef struct list LIST;
// 2. khoi tao danh sach lien ket
void init(LIST &l)
{
l.phead =l.ptail=NULL;
}
//3 tao node trong danh sach
NODE* getnode(int x)
{
NODE *p;
p=(NODE *)malloc(sizeof(NODE));
if(p==NULL)
{
return NULL;
}
p->data =x;
p->pnext=NULL;
return p;
}
//4 them node
void themdau(LIST &l,NODE *p)
{
if(l.phead==NULL) // danh sach rong
{
l.phead=l.ptail=p;
}
else
{
p->pnext = l.phead;
l.phead=p;
}
}
void themcuoi (LIST &l,NODE *p)
{
if(l.phead==NULL) // danh sach rong
{
l.phead=l.ptail=p;
}
else
{
l.ptail->pnext=p;
l.ptail=p;
}
}
//5.nhap du lieu
void input(LIST &l)
{
int n,x,i;
printf("ban muon nhap bao nhieu node : ");
scanf("%d",&n);
init(l);//khoi tao danh sach
for(i=1;i<=n;i++)
{
printf("\n nhap data : ");
scanf("%d",&x);
NODE *p=getnode(x);
themcuoi(l,p);
}
void in(LIST l)
{
for(NODE *p=l.phead;p!=NULL;p=p->pnext)
{
printf("%d\t",p->data);
}
}
}
int main()
{
printf("Hello world!\n");
LIST l;
input(l);
in(l);
return 1;
}
đoạn code này chạy ngon trong C++
nhưng em gặp vấn đề khi dùng trong ngôn ngữ C , cụ thể là :
// 2. khoi tao danh sach lien ket
void init(LIST &l)
{
l.phead =l.ptail=NULL;
}
cách truyền tham trị này trong C không được phép- và nó chạy ra lỗi ngay
em đã thử cách như
void init(LIST **l)
{
*l.phead =*l.ptail=NULL;
}
nhưng nó vẫn lỗi ???
Em rất mong được các đàn anh chỉ bảo thêm ạ
em cảm ơn


83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?