Đưa ra các phần tử lớn nhất trong LinkList

Mình có làm hàm sau đây đưa ra những sinh viên có điểm cao nhất, nhưng khi chạy thì bị crash. nhờ các tiền bối chỉ giúp

//Tim sinh vien co diem MAX
void diemMAX(LIST l){
	int dem;
	NODE *p = l.pHead;
	NODE *max = l.pHead;
	for(p->pNext; p!=NULL; p=p->pNext){
		if(p->data.diemsv > max->data.diemsv){
			max = p; dem = 0;
		}
		if(p->data.diemsv == max->data.diemsv){
			max = p; dem++;
		}
	}
	if(dem == 0){
		xuatsv(max->data);
	}else{
		NODE *q = l.pHead;
		while(q!=NULL){
			if(q->data.diemsv==max->data.diemsv){
				xuatsv(q->data);
				q=q->pNext;
			}
		}
	}
}

bạn có thể tham khảo bài này của mình rồi áp dụng vào bài của bạn http://codepad.org/HxL15Sq5

1 Like

sao lại gán 2 lần l.phead thế kia

1 Like
    void Max(LIST l)
    {
       NODE *p,*max;
       int dem;
       p=l.phead;
       max=p;
       for(p;p;p=p->pnext)
       {
           if(p->data.diem>max->data.diem)  
   			{ max=p; dem=0; }
           if(p->data.diem==max->data.diem) 
   			{ max=p; dem++; }			
       }
        cout<<"<-----------------Sinh vien co diem cao nhat------------------------>"<<endl;
       if(dem==0)
   	  output(max->data);
   	else 
   	 output(max->data);
    }
1 Like

hàm của bạn sửa khi có 2 sinh viên có điểm cùng MAX nó chỉ xuất 1 thằng thôi, tks các bạn mình sửa được rồi

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