Diễn đàn các môn học - Huỳnh Phước Hải
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Bài 42 Ngăn xếp

2 posters

Go down

Bài 42 Ngăn xếp Empty Bài 42 Ngăn xếp

Bài gửi  root Thu Feb 10, 2011 2:42 am

Bài 42. Sử dụng mảng để cài đặt Ngăn xếp (Stack).
Xây dựng các phép toán sau
1. Khởi tạo ngăn xếp MakeNullStack
2. Kiểm tra ngăn xếp rỗng IsEmptyStack
3. Kiểm tra ngăn xếp đầy IsFullStack
4. Thêm một phần tử vào Stack Push
5. Xóa một phần tử ra khỏi Stack
6. In một Stack ra màn hình
7. Lấy giá trị của phần tử Top Stack

root
Admin

Tổng số bài gửi : 37
Join date : 03/01/2011
Age : 38
Đến từ : An Giang

http://www.huynhhai.co.cc

Về Đầu Trang Go down

Bài 42 Ngăn xếp Empty Bài 42

Bài gửi  LoveIT Fri Feb 11, 2011 4:05 pm

Bài 42:Sử dụng mảng để cài đặt Ngăn xếp (Stack).



Code:
class Stack
    {
     
        int top;              //vi tri dinh stack
        int[] elements;      //cac phan tu of stack
       
        //contructor khoi tao
        public Stack(int num)
        {
            //num la so phan tu max of stack
            elements = new int[num];
        }

        //khoi tao stack rong
        public void MakeNullStack()
        {
            top = -1;
        }

        //kiem tra stack rong?
        public bool IsEmpty()
        {
            return top == -1;
        }

        //kiem tra stack full?
        public bool IsFull()
        {
            return top == elements.Length - 1;
        }

        //them phan tu vao dinh
        public void Push(int value)
        {
            if (!IsFull())
            {
                top = top + 1;
                elements[top] = value;
            }
            else Console.WriteLine("Stack full!");
           
        }
     
        //xoa phan tu o dinh stack
        public void Pop()
        {
            top = top - 1;
        }
        //gia tri tai dinh stack
        public int ValueTop()
        {
            return elements[top];
        }
   
        //xuat ra cac gia tri of stack
        public void Printf()
        {
            int value ;
            while (!IsEmpty())
            {
                value = ValueTop();
                Console.Write(value +" ");
                top = top - 1;
            }

        }

    }
    class Program
    {
        static void Main()
        {
            Stack stackOject = new Stack(6);
            /*  nap cac phan tu vao stack  */
            stackOject.MakeNullStack();
            stackOject.Push(3);
            stackOject.Push(6);
            stackOject.Push(10);
            stackOject.Push(20);
            stackOject.Push(13);
            stackOject.Push(100);
           
            /*--------------------------------*/
            Console.WriteLine("truoc khi xoa:");         
            Console.WriteLine("Gia tri : {0}", stackOject.ValueTop());
            Console.WriteLine("sau khi xoa:");
            stackOject.Pop();
            Console.WriteLine("Gia tri : {0}", stackOject.ValueTop());
            stackOject.Printf();
         
           
        }
    }

LoveIT

Tổng số bài gửi : 15
Join date : 16/01/2011

Về Đầu Trang Go down

Bài 42 Ngăn xếp Empty Bổ sung

Bài gửi  Guest Fri Feb 11, 2011 5:33 pm

Cần xét các trường hợp
  1. Khi lấy top. Stack có rỗng không.
    Khi thêm một phần tử Stack có bị đầy không
    Khi xóa một phần tử Stack có rỗng không

Guest
Khách viếng thăm


Về Đầu Trang Go down

Bài 42 Ngăn xếp Empty Post lại bài 42

Bài gửi  LoveIT Sat Feb 12, 2011 5:09 am

Bài 42:Sử dụng mảng để cài đặt Ngăn xếp (Stack).
Thank Guest đã góp ý.



Code:
class Stack
    {
     
        int top;              //vi tri dinh stack
        int[] elements;      //cac phan tu of stack
       
        //contructor khoi tao
        public Stack(int num)
        {
            //num la so phan tu max of stack
            elements = new int[num];
        }

        //khoi tao stack rong
        public void MakeNullStack()
        {
            top = -1;
        }

        //kiem tra stack rong?
        public bool IsEmpty()
        {
            return top == -1;
        }

        //kiem tra stack full?
        public bool IsFull()
        {
            return top == elements.Length - 1;
        }

        //them phan tu vao dinh
        public void Push(int value)
        {
            if (!IsFull())
            {
                top = top + 1;
                elements[top] = value;
            }
            else
                Console.WriteLine("ERROR! STACK IS FULL!!");
           
        }
     
        //xoa phan tu o dinh stack
        public void Pop()
        {
            if(!IsEmpty())
                top = top - 1;
            else
                Console.WriteLine("ERROR! STACK IS EMPTY! can not del");
        }
        //gia tri tai dinh stack
        public int ValueTop()
        {
            if(!IsEmpty())
                return elements[top];
            else
                Console.WriteLine("ERROR! STACK IS EMPTY!");
            return top;
        }
   
        //xuat ra cac gia tri of stack
        public void Printf()
        {
            int value ;
            while (!IsEmpty())
            {
                value = ValueTop();
                Console.Write(value +" ");
                top = top - 1;
            }

        }

    }
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Nhap vao so phan tu of stack: ");
            int num = int.Parse(Console.ReadLine());
            Stack stackOject = new Stack(num);
           
            stackOject.MakeNullStack();

            //Nhập ngẫu nhiên n phần tử
            Random ran = new Random();
            for (int i = 0; i < num; i++)
            {
                stackOject.Push(ran.Next(100)); //Tạo số ngẫu nhiên từ 0 đến 99
            }
           
            /*--------------------------------*/
            Console.WriteLine("truoc khi xoa:");         
            Console.WriteLine("Gia tri : {0}", stackOject.ValueTop());
            Console.WriteLine("sau khi xoa:");
            stackOject.Pop();
            Console.WriteLine("Gia tri : {0}", stackOject.ValueTop());
            //xuat ra cac gia tri of stack
            stackOject.Printf();
         
           
        }
    }

LoveIT

Tổng số bài gửi : 15
Join date : 16/01/2011

Về Đầu Trang Go down

Bài 42 Ngăn xếp Empty Re: Bài 42 Ngăn xếp

Bài gửi  Sponsored content


Sponsored content


Về Đầu Trang Go down

Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết