30/09/2018, 18:20
Thắc mắc về Con trỏ trong C
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("
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 ",p->data);
}
}
}
int main()
{
printf("Hello world!
");
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
Bài liên quan
Mình nghĩ là do trong hàm main bạn khai báo LIST l, thì đâu phải là kiểu con trỏ, nên tham số truyền vào của hàm khác kiểu dữ liệu của hàm nên không khớp.
P/s: thật ra mình toàn code C trên nên C++ nên không rành lắm
bạn sửa để code mình chạy đc ko ?
vật vã cả chiều giờ :\
trong C không có truyền tham chiếu bạn ơi. Để chạy được thì bạn đổi lưu file từ file.c sang file.cpp
thì mình bảo là nó chạy ngon trên c++.
mình muốn sửa để nó chạy trên c kia mà @@