Code:
void taonut(node *f)//f được truyền như tham trị
{ node *p,*q;
int i;
f=NULL;//những thay đổi đối với f không có tác dụng sau khi kết thúc hàm
p=f;
for (i=1;i<=10;i++){
q=new node;
q->info=i;
q->next=NULL;
if (f==NULL)
f=q;// thiếu lệnh : p = f;
else
{ p->next=q;
p=q;
}
}
Nên nhớ rằng có 2 kiểu truyền tham số ,đó là truyền theo kiểu tham trị và tham biến.Truyền theo tham trị thì những thay đổi đối với những đối số đó trong thân hàm sẽ không được lưu lại sau khi kết thúc hàm và ngược lại nếu truyền theo tham biến thì những thay đổi vẫn sẽ được giữ lại sau lời gọi hàm.
Ở trên bạn truyền con trỏ f theo kiểu tham trị vì thế những biến đổi của f trong hàm không có tác dụng sau khi gọi hàm.Vậy hãy sửa hàm trên như sau :
void taonut(node** f) và gọi hàm như sau : taonut(&f)
Muốn thay đổi f trong thân hàm ta làm như sau : *f = NULL;
Còn cách khác là dùng alias :
void taonut(node* &f);
Gọi hàm : taonut(f);
Sử dụng : f = NULL;