Bài 42 Ngăn xếp

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Bài 42 Ngăn xếp

Bài gửi  root on 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 : 30
Đến từ : An Giang

Xem lý lịch thành viên http://www.huynhhai.co.cc

Về Đầu Trang Go down

Bài 42

Bài gửi  LoveIT on 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

Xem lý lịch thành viên

Về Đầu Trang Go down

Bổ sung

Bài gửi  Guest on 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

Post lại bài 42

Bài gửi  LoveIT on 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

Xem lý lịch thành viên

Về Đầu Trang Go down

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

Bài gửi  Sponsored content Today at 9:58 pm


Sponsored content


Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang


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