Sao không thể in các phần tử của list vậy mọi người

#include<stdio.h>
#include<conio.h>
#include<STDLIB.h>
struct node {
	 int data;
	 struct node *next;
            };

void init(struct node *head,int *count )
   {   head=NULL;
       *count=0;
   }
void nhap(struct node* head,int *count,int x)
   {  struct node *cur=head,*p;
      int i;
      
       p=(struct node*) malloc (sizeof(struct node));
       p->data=x;
       if(*count==0)
         { head=p;
		   head->next=NULL; 
			 }
         else
            {
			  for(i=1;i<(*count);i++)
                {
				 cur=cur->next;
                }
               p->next=NULL;
			   cur->next=p; 
            }  
       *count++;        
    }
    
void lietke(struct node *head,int *count)
{     struct node *cur=head;
      int i;
     /*   for(cur=head;cur!=NULL;cur=cur->next)
        {  printf("%d  ",cur->data);
           cur=cur->next;
		}*/
		while(cur!=NULL)
		{ printf(" %d  ",cur->data);
		   cur=cur->next;
           }
}           
main()
{
struct node *h;
int co=0;	
   init(h,&co);
   nhap(h,&co,3);
   nhap(h,&co,4);
   nhap(h,&co,5);
   nhap(h,&co,6);
   nhap(h,&co,7);
   lietke(h,&co);
getch;
return 0;
   	
}

Đây không phải là lần đầu tiên bạn đăng bài, nhưng bạn vẫn còn thiếu miêu tả, bạn phải chỉ rõ bạn gặp vấn đề gì với danh sách đó, cụ thể lỗi thế nào, bài toán ra sao chứ, bạn hỏi thế mọi người sẽ bỏ qua luôn đấy! Rút kinh nghiệm

2 Likes

cảm ơn anh đã nhăc nhở

Nếu đã hiểu rồi thì nên viết lại chứ nhỉ? Mình không phải nhắc nhở bạn, mình chỉ góp ý cho bạn thôi!

Theo mình sau lệnh for thì cur của bạn trỏ tới NULL

:open_mouth:sao lại vậy ạ, cur lúc này đang ở phần tử cuối cùng, sau đó mình mới thêm p vào mà, nghĩa là p là phần tử cuối cùng đấy

cho mình hỏi khi nào thì dùng H.DATA khi nào thì dùng H->Data, mình không hiểu chỗ đó lắm, viết toàn lỗi

Vì khi i = 1, khối lệnh trong else được thực hiện i < *count là phù hợp nhưng cur chỉ mới có 1 phần tử ơr khối lệnh if phía trước (tức là cur->next = NULL) nên cur = cur->next; cur->next = p lỗi.
Mình ít khi thấy ai phải dùng thêm 1 biến “đếm” bên ngoài, vì bạn có thể dùng 1 tính chất của nó, đuôi của linked list luôn là null.
H.Data khi H không phải con trỏ, H->Data khi H là con trỏ. H->Data == (*H).Data (lưu ý dấu ngoặc).

2 Likes

cảm ơn bạn để mình thử lại :heart_eyes:

H->data khi nó là con trỏ, H.data khi nó là đối tượng tham chiếu

H.data là khi H là một đối tượng, còn H->data khi H là con trỏ đến đối tượng (viết gọn của (*H).data).

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