PDA

View Full Version : có đoạn code này chưa hiểu



vo_giâct
27-04-2009, 09:55
mình có đoạn code này chưa hiểu bạn có thể chạy tường bước dùm mình được k
void removehead(lít &1)
{
NODE *p=1.phead;
if(p==NULL) return;
if(l.phead=l.ptail) l.phead=l.ptail=NULL;
else
{
l.phead=p->next;
if(p==l.ptail)
l.ptail->pnext=l.phead;
}
delete p;
}

ptaminh
27-04-2009, 11:53
mình có đoạn code này chưa hiểu bạn có thể chạy tường bước dùm mình được k



void removehead(list &1)
{
NODE *p=1.phead; // lưu lại Head của list
if(p==NULL) return; // list rỗng => không có gì để remove
if(l.phead==l.ptail) // list có 1 phần tử (Head chính là Tail)
l.phead=l.ptail=NULL; // list có 1 phần từ => đưa list về rỗng
else // list có nhiều phần tử
{
l.phead=p->next; // gán Head List bằng phần tử kế tiếp
// 2 dòng code dưới đây là unreachable => nên remove ra khỏi chương trình
if(p==l.ptail) // điều kiện này không thể xảy ra => biểu thức luôn false.
l.ptail->pnext=l.phead;
// nếu là ring list cần cập nhật lại next của Tail
l.ptail->pnext=l.phead;
}
delete p;
}

minhquang12g
27-04-2009, 14:03
trả lời chi tiết quá không có gì để nói :((