• 链队列的实现


    代码
       //接口
       public interface IQueue<T>
        {
            
    int GetLength(); //求队列的长度
            bool IsEmpty(); //判断对列是否为空
            void Clear(); //清空队列
            void In(T item); //入队
            T Out(); //出队
            T GetFront(); //取对头元素
        }
       
    //接口的实现
       public class LinkQueue<T> : IQueue<T>
        {
            
    private Node<T> front; //队列头指示器
            private Node<T> rear; //队列尾指示器
            private int num; //队列结点个数

            
    //队头属性
            public Node<T> Front
            {
                
    get
                {
                    
    return front;
                }
                
    set
                {
                    front 
    = value;
                }
            }
            
    //队尾属性
            public Node<T> Rear
            {
                
    get
                {
                    
    return rear;
                }
                
    set
                {
                    rear 
    = value;
                }
            }
            
    //队列结点个数属性
            public int Num
            {
                
    get
                {
                    
    return num;
                }
                
    set
                {
                    num 
    = value;
                }
            }
            
    //构造器
            public LinkQueue()
            {
                front 
    = rear = null;

                num 
    = 0;
            }
            
    //求链队列的长度
            public int GetLength()
            {
                
    return num;
            }
            
    //清空链队列
            public void Clear()
            {
                front 
    = rear = null;
                num 
    = 0;
            }
            
    //判断链队列是否为空
            public bool IsEmpty()
            {
                
    if ((front == rear) && (num == 0))
                {
                    
    return true;
                }
                
    else
                {
                    
    return false;
                }
            }
            
    //入队
            public void In(T item)
            {
                Node
    <T> q = new Node<T>(item);
                
    if (rear == null)
                {
                    rear 
    = q;
                }
                
    else
                {
                    rear.Next 
    = q;
                    rear 
    = q;
                }
                
    ++num;
            }
            
    //出队
            public T Out()
            {
                
    if (IsEmpty())
                {
                    Console.WriteLine(
    "Queue is empty!");
                    
    return default(T);
                }
                Node
    <T> p = front;
                front 
    = front.Next;
                
    if (front == null)
                {
                    rear 
    = null;
                }
                
    --num;
                
    return p.Data;
            }
            
    //获取链队列头结点的值
            public T GetFront()
            {
                
    if (IsEmpty())
                {
                    Console.WriteLine(
    "Queue is empty!");
                    
    return default(T);
                }
                
    return front.Data;
            }
        }
  • 相关阅读:
    带宽利用率提升50%,腾讯云联网架构方案解析
    重构实践:基于腾讯云Elasticsearch搭建QQ邮箱全文检索
    存算分离下写性能提升10倍以上,EMR Spark引擎是如何做到的?
    秒级去重:ClickHouse在腾讯海量游戏营销活动分析中的应用
    降本提效,贝壳搜索推荐架构统一之路
    亿级用户,腾讯看点信息流推荐系统的架构挑战
    优秀程序员,如何提高架构能力?
    如何创建体元栅格?
    导出属性表字段结构
    去除镶嵌数据集中影像的黑边或白边
  • 原文地址:https://www.cnblogs.com/hubcarl/p/1706373.html
Copyright © 2020-2023  润新知