C# .net非窗体实战七:队列接口——作业

问题:

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

//第一个题目是List的出队入队,2.11是堆栈的出队入队测试,这个是队列的
//感觉很有可能要求着栈、列表和队列来考综合的一部分。
namespace _2
{
    interface QueueInterface
    {
        void InQueue(int x);      // 向队列队尾入列新元素
        int OutQueue();           // 队列队头元素出列
        bool Empty();           // 判断队列是否为空
        bool Full();            // 判断队列是否已满
        void Clear();           // 将队列清空
        int Count { get; }      // 获取队列中现有元素个数
    }

    class Queue<T> //用类实现接口
    {
        private int[] elements;// 存储队列元素的数组
        private int front;// 队头索引 
        private int rear;// 队尾索引
        private int capacity; // 队列最大容量 
        private int count;// 当前元素个数  

        public Queue(int size)
        {
            elements = new int[size];
            capacity = size;
            front = 0;
            rear = -1;
            count = 0;
        }
        //入队
        public void InQueue(int x)
        {
            if (Full())
            {
                Console.WriteLine("队列已满!");
                return;

            }
            rear = (rear + 1) % capacity;
            elements[rear] = x;
            count++;
        }
        //出队
        public int OutQueue()
        {
            if (Empty())
            {
                Console.WriteLine("队列为空!");
                return default;
            }
            int item = elements[front];
            front = (front + 1) % capacity;
            count--;
            return item;
        }

        public bool Empty()
        {
            return count == 0;
        }

        public bool Full()
        {
            return count == capacity;
        }
       
        public void Clear()
        {

            front = 0;
            rear = -1;
            count = 0;
        }

        public int Count => count;//这个动态指针感觉挺有意思的
    }
    internal class Program
    {
        static void Main(string[] args)
        {
            Queue<int> queue = new Queue<int>(5);

            // 测试入队

            while (true)
            {
                Console.WriteLine("请输入操作(1 为入队,2 为出队,3 为清空队列,4 为退出):");
                int input = int.Parse(Console.ReadLine());

                if (input == 1)
                {
                    Console.Write("请输入要入队的整数: ");
                    int value = int.Parse(Console.ReadLine());
                    queue.InQueue(value);
                    Console.WriteLine("当前元素个数: " + queue.Count);
                }
                else if (input == 2)
                {
                    queue.OutQueue();
                    Console.WriteLine("当前元素个数: " + queue.Count);
                }
                else if (input ==3)
                {
                    queue.Clear();
                    Console.WriteLine("当前元素个数: " + queue.Count);
                }
                else if (input== 4)
                {
                    Console.WriteLine("程序结束。");
                    break;
                }
                else
                {
                    Console.WriteLine("无效的输入,请重试。");
                }
            }

            //Console.WriteLine("入队元素:1, 2, 3");
            //queue.InQueue(1);
            //queue.InQueue(2);
            //queue.InQueue(3);
            //Console.Write("测试出队元素:" + queue.OutQueue());
            //Console.Write("判断是否为空:" + queue.Empty());
            //for (int i = 0; i < 3; i++)
            //{
            //    queue.InQueue(i + 4);
            //}

            //Console.WriteLine("判断队列是否已满: " + queue.Full());

            //Console.WriteLine("清空队列: ");
            //queue.Clear();

            //Console.WriteLine("当前元素个数: " + queue.Count);

             清空队列
            //queue.Clear();
            //Console.WriteLine("队列已清空,当前元素个数: " + queue.Count);
        }
    }
}

运行结果:

某油作业题,持续更新中,欢迎关注,共勉!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值