コード例 #1
0
        static void Main(string[] args)
        {
            int s = 5, index;

            Queue      queue;
            LinkedList linkList;
            Stack      stack;
            Node       sNode = null, qNode = null, lNode = null;
            char       flag = 'y', ch, c;

            while (flag == 'y')
            {
                Console.WriteLine("Do you want to continue");
                flag = (Console.ReadKey().KeyChar);
                if (flag != 'y')
                {
                    break;
                }

                Console.WriteLine("What operation you want to  perform\n" + "Press 'a' for adding \n" + "Press 'r' for remove \n" + "Press 'd' for display \n" + "Press 'f' to check if queue is full \n" + "Press 'e' to check if queue is empty \n" + "Press 'p' to get queue peek value \n" + "Press 'i' to remove element from specific pos\n" + "Press 'c' to insert at pos in ll  \n" + "Press 'h' to get  stack top value \n");
                c = Console.ReadKey().KeyChar;
                if (c == 'p' || c == 'f' || c == 'e')
                {
                    Console.WriteLine("you can perform only for queues");

                    ch = 'q';
                }
                else if (c == 'h')
                {
                    Console.WriteLine("you can perform only for stack");
                    ch = 's';
                }
                else if (c == 'i' || c == 'c')
                {
                    Console.WriteLine("you can perform only for linkedlist");
                    ch = 'l';
                }
                else
                {
                    Console.WriteLine("What data structure want to work on\n" + "Press 'l' for linkedlist \n" + "Press 'q' for queue \n" + "Press 's' for stack \n");

                    ch = Console.ReadKey().KeyChar;
                }
                switch (c)
                {
                case 'a':

                    Console.WriteLine("Enter element");
                    int n = Int32.Parse(Console.ReadLine());

                    if (ch == 'q')
                    {
                        queue = new Queue();

                        qNode = queue.AddElement(n, qNode);
                    }
                    else if (ch == 's')
                    {
                        stack = new Stack();

                        sNode = stack.AddElement(n, sNode);
                    }
                    else if (ch == 'l')
                    {
                        linkList = new LinkedList();
                        lNode    = linkList.AddElement(n, lNode);
                    }

                    break;

                case 'r':

                    if (ch == 'q')
                    {
                        queue = new Queue();
                        qNode = queue.RemElement(qNode);
                    }

                    else if (ch == 's')
                    {
                        stack = new Stack();
                        sNode = stack.RemElement(sNode);
                    }
                    else if (ch == 'l')
                    {
                        linkList = new LinkedList();
                        lNode    = linkList.RemElement(lNode);
                    }

                    break;

                case 'd':

                    if (ch == 'q')
                    {
                        queue = new Queue();
                        queue.Display(qNode);
                    }

                    else if (ch == 's')
                    {
                        stack = new Stack();
                        stack.Display(sNode);
                    }
                    else if (ch == 'l')
                    {
                        linkList = new LinkedList();
                        linkList.Display(lNode);
                    }
                    break;

                case 's':

                    if (ch == 'q')
                    {
                        queue = new Queue();
                        qNode = queue.Sort(qNode);
                    }

                    else if (ch == 's')
                    {
                        stack = new Stack();
                        sNode = stack.Sort(sNode);
                    }
                    else if (ch == 'l')
                    {
                        linkList = new LinkedList();
                        lNode    = linkList.Sort(lNode);
                    }
                    break;

                case 'f':

                    queue = new Queue();
                    Console.WriteLine(queue.IsFull(qNode, s));
                    break;

                case 'e':

                    queue = new Queue();
                    Console.WriteLine(queue.IsEmpty(qNode));
                    break;

                case 'c':

                    Console.WriteLine("Enter element");
                    n = Int32.Parse(Console.ReadLine());
                    Console.WriteLine("Enter index");
                    index    = Int32.Parse(Console.ReadLine());
                    linkList = new LinkedList();
                    lNode    = linkList.InsertAtPos(n, index, lNode);
                    break;

                case 'i':

                    index    = Int32.Parse(Console.ReadLine());
                    linkList = new LinkedList();
                    lNode    = linkList.RemoveAtPos(index, lNode);
                    break;

                case 'h':

                    stack = new Stack();
                    Console.WriteLine(stack.Peek(sNode));
                    break;

                case 'p':

                    queue = new Queue();
                    Console.WriteLine(queue.Peek(qNode));
                    break;
                }
            }
            Console.ReadLine();
        }