30/09/2018, 20:08
Xóa 1 phần tử ngăn xếp cài DSLK?
Mấy anh chị giải thích p=s.top bằng hình vẽ cho em với em k hiểu cái phần code sau else lắm!!
dacntt xoa(stack &s,dacntt x)
{
NODE *p;
if(ktrong(s)) printf("
ngan xep rong");
else
{
p=s.top;
s.top=p->next;
x=p->data;
}
return x;
}
Bài liên quan
mình nghĩ như thế này:
p = s.top chọn p = top trong stack
bạn ơi cái Top là cái nào cái P là cái nào trong hình vẽ mình k hiểu @@
Cái trong hình vẽ là danh sách liên kết, bạn ấy tìm hình đúng với tiêu đề. nhưng lại không áp dụng được với code, code bạn đưa ra là Stack. Mình không tìm được hình nhưng mình thử giải thích cho bạn.
Stack nó chỉ được thao tác (thêm, xóa) ở 1 đầu. Sẽ có 1 con trỏ top trỏ vào đầu ngăn xếp. Khi muốn lấy ra (xóa) 1 phần tử ở đầu ngăn xếp thì sẽ trỏ 1 biến vào top để lấy ra vị trí đầu ngăn xếp :
p = s.top
. Sau khi xóa phần tử trên cùng của ngăn xếp thì top của ngăn xếp bây giờ sẽ phải là phần tử tiếp theo đó nên sẽ gáns.top = p->next
. Cònx = p->data
là để lấy ra dữ liệu của phần tử ban đầu ở đỉnh ngăn xếp.Mình tìm được cái hình như này, trường hợp xóa là 2 hình phía sau.