01/10/2018, 08:54

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;
   	
}
Vu Van Chung viết 11:03 ngày 01/10/2018

Đâ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

Duy Linh Tran viết 11:06 ngày 01/10/2018

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

Vu Van Chung viết 11:06 ngày 01/10/2018

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!

Vu Van Chung viết 10:57 ngày 01/10/2018

for(i=0;i<(*count);i++)
{
cur=cur->next;
}
p->next=NULL;
cur->next=p;

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

Duy Linh Tran viết 10:57 ngày 01/10/2018

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

Duy Linh Tran viết 11:11 ngày 01/10/2018

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

Khoa NTA viết 11:07 ngày 01/10/2018

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).

Duy Linh Tran viết 11:07 ngày 01/10/2018

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

Vu Van Chung viết 10:56 ngày 01/10/2018

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

rogp10 viết 11:05 ngày 01/10/2018

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).

Bài liên quan
0