示例#1
0
        // 进队
        public void EnQueue(T data)
        {
            QueueLinkNode <T> newNode = new QueueLinkNode <T>(data);

            rear.next = newNode;
            rear      = newNode;

            length++;
        }
示例#2
0
        // 清空
        public void Clear()
        {
            while (front != rear)
            {
                QueueLinkNode <T> toClear = front.next;
                front.next = toClear.next;

                if (rear == toClear)
                {
                    rear = front;
                }

                toClear.Reset();
            }
            front.Reset();

            length = 0;
        }
示例#3
0
        public void Print()
        {
            StringBuilder builder = new StringBuilder("[");

            QueueLinkNode <T> cur = front;

            while (cur != rear)
            {
                cur = cur.next;
                builder.Append(cur.data);

                if (cur != rear)
                {
                    builder.Append(", ");
                }
            }
            builder.Append("]");

            Log(builder.ToString());
        }
示例#4
0
        // 出队
        public T DeQueue()
        {
            if (IsEmpty())
            {
                LogError("The Queue is Empty!");
                return(default(T));
            }

            QueueLinkNode <T> node = front.next;

            front.next = node.next;
            if (node == rear)
            {
                rear = front;
            }

            T data = node.data;

            node.Reset();

            length--;
            return(data);
        }
示例#5
0
 public QueueLinkNode(T data)
 {
     this.data = data;
     next      = null;
 }
示例#6
0
 public QueueLink()
 {
     front  = new QueueLinkNode <T>();
     rear   = front;
     length = 0;
 }
示例#7
0
 public void Reset()
 {
     data = default(T);
     next = null;
 }
示例#8
0
 public QueueLinkNode()
 {
     data = default(T);
     next = null;
 }