//Hàm xử lý sự kiện nhấn button Pop private void btnPop_Click(object sender, EventArgs e) { //Nếu stack khác rỗng thì tiến hành xóa if (!myStack.IsEmptyStack()) { NODE <int> p; //Cho biết selectPush = false để khi vào trong hàm thì nó sẽ gọi //dòng lệnh xóa selectPush = false; p = myStack.Top; DrawNode(p);// size--; //Tọa độ của giảm theo chiều từ trên xuống nodeY += 50; //Bây giờ mới pop ra theo stack đã xây dựng txtPop.Text = myStack.Pop().ToString(); txtStack.Text = myStack.PrintStack(); p = myStack.Top; // //Trả lại nut selectPush = true selectPush = true; //Nếu size > 0 nghĩa là vẫn con node chua xóa, thực hiện //xóa ngược lại cập nhật txtHead = NULL if (size > 0) { DrawNode(p); } else { txtHead.Text = "Top = NULL"; } } else { txtPop.Text = ""; MessageBox.Show("Stack is empty!", "Notification", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }