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;
}
Haruhiro viết 22:23 ngày 30/09/2018

mình nghĩ như thế này:
p = s.top chọn p = top trong stack

Dung Nguyen viết 22:21 ngày 30/09/2018

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 @@

Sáng Béo viết 22:19 ngày 30/09/2018

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án s.top = p->next. Còn x = 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.

Bài liên quan
0