public T Pop() { T x = Top.Info; Top = Top.Next; return(x); }
public void Push(T x) { NODE <T> p = new NODE <T>(x); p.Next = Top; Top = p; }
public string PrintStack() { string kq = ""; for (NODE <T> p = this.Top; p != null; p = p.Next) { kq += p.Info.ToString() + " "; } return(kq); }
public NODE(T x) { Info = x; Next = null; label = new Label { Size = new Size(94, 18), AutoSize = true, Font = new Font("Times new roman", 14f, FontStyle.Bold), BackColor = Color.White, Text = x.ToString(), }; }
//Hàm vẽ một node private void DrawNode(NODE <int> node) { Brush br; //Nếu buttonPush được chọn sẽ vẽ màu của node và các đường if (selectPush) { pen = new Pen(Color.Red, 3); br = new SolidBrush(Color.Black); } //Ngược lại cũng vẽ mà vẽ màu trắng để minh họa xóa các đường else { pen = new Pen(Color.White, 4); br = new SolidBrush(Color.White); } //Vẽ hình vuông biểu diễn 1 ô của node node.rectangle = new Rectangle(new Point(nodeX, nodeY), new Size(100, 25)); g.DrawRectangle(pen, node.rectangle); // //Nếu selectPush = true , nghĩa là ta đang muốn thực hiện vẽ 1 node if (selectPush) { node.label.Location = new Point(nodeX + 2, nodeY + 2); pnlCanvas.Controls.Add(node.label); //Tiến hành vẽ mô phỏng animation DrawPointer(); } //Ngược lại xóa thông tin node và đường else { node.label.Dispose(); node.label = null; pnlCanvas.Controls.Remove(node.label); // //Tiến hành xóa các đường đi g.DrawLine(pen, nodeX + 50, nodeY + 25, nodeX + 50, nodeY + 49); //Cập nhật là vị trí của node top UpdateTop(); } br.Dispose(); }
//Constructor public NODE() { Next = null; }
//Constructor public STACK() { Top = null; }