Example #1
0
    void DoubleNodeQueueTest()
    {
        Queue_2Node <int> queue2node = new Queue_2Node <int>();

        int[] nums = new int[10] {
            0, 1, 2, 3, 4, 5, 6, 7, 8, 9
        };


        for (int i = 0; i < nums.Length; i++)
        {
            queue2node.Enqueue(nums[i]);
        }

        int    index = 0;
        string str   = null;

        foreach (int T in queue2node)
        {
            str += "[ " + index + "]:" + T + "\t";
            index++;
        }
        print(str);

        print("在首结点插入元素-1");
        queue2node.InsertInHead(-1);
        Node <int> current = queue2node.first.next;

        print(current.prior.item);
        print(current.item);
        print(current.next.item);
    }
Example #2
0
    void DoubleNodeQueue_InsertInHead()
    {
        Queue_2Node <int> queue2node = new Queue_2Node <int>();

        int[] nums = new int[10] {
            0, 1, 2, 3, 4, 5, 6, 7, 8, 9
        };


        for (int i = 0; i < nums.Length; i++)
        {
            queue2node.Enqueue(nums[i]);
        }

        int index = 0;

        foreach (int T in queue2node)
        {
            print("queue2node[ " + index + "]:" + T);
            index++;
        }

        print("在首结点插入元素:-1");
        queue2node.InsertInHead(-1);



        int index2 = 0;

        foreach (int T in queue2node)
        {
            print("queue2node[ " + index2 + "]:" + T);
            index2++;
        }
    }
Example #3
0
    public static Node <Item> Reverse(ref Queue_2Node <Item> queue)
    {
        Stack <Item> stack = new Stack <Item>();

        Node <Item> current = queue.first;

        while (current != null)
        {
            stack.push(current.item);
            current = current.next;
        }


        Queue_2Node <Item> newQueue         = new Queue_2Node <Item>();
        Node <Item>        stackCurrentNode = stack.first;

        while (stackCurrentNode != null)
        {
            newQueue.Enqueue(stackCurrentNode.item);
            stackCurrentNode = stackCurrentNode.next;
        }
        queue = newQueue;

        return(queue.first);
    }
Example #4
0
    /// <summary>
    /// Queue<Item> r=new Queue<Item>(q);
    /// r是q的独立副本,对r,q操作(入列出列)二者不会产生影响
    /// </summary>
    /// <param name="q"></param>
    public Queue_2Node(Queue_2Node <Item> q)
    {
        Node <Item> current = q.first;

        while (current != null)
        {
            this.Enqueue(current.item);
            current = current.next;
        }
    }
Example #5
0
    void QueueCopy()
    {
        Queue_2Node <int> queue2node = new Queue_2Node <int>();

        int[] nums = new int[10] {
            0, 1, 2, 3, 4, 5, 6, 7, 8, 9
        };


        for (int i = 0; i < nums.Length; i++)
        {
            queue2node.Enqueue(nums[i]);
        }

        int    index = 0;
        string str   = null;

        foreach (int T in queue2node)
        {
            str += "[ " + index + "]:" + T + "\t";
            index++;
        }
        print(str);

        print("复制队列副本...");
        Queue_2Node <int> queueCopy = new Queue_2Node <int>(queue2node);

        print(" queue2node.addFirst(-1);");
        queue2node.addFirst(-1);

        int    index2 = 0;
        string str2   = null;

        foreach (int T in queueCopy)
        {
            str2 += "[ " + index2 + "]:" + T + "\t";
            index2++;
        }
        print("Show 副本:" + str2);
    }