zoukankan      html  css  js  c++  java
  • How does this enqueue function work?

    Question:

    I'm having trouble understanding this line:

    rear->next = temp;

    in this queue function:

     void Queue::enqueue(int data) {
    
        Node *temp = new Node();    // make a temporary node
        temp->info = data;          // assign passed in data to it
        temp->next = 0;             // make it point to null
    
        if(front == 0)              // if there is no front node
            front = temp;           // make this a front node
    
        else                        // else, if there is already a front node
            rear->next = temp;      // make this rear's next pointer???? why?
    
        rear = temp;                // in any case make this a rear node
    
    }

    Wouldn't it make more sense to do it like this?

        else                    // else, if there is already a front node
            temp->next = rear;  // make temp point to REAR; not other way around
    
        rear = temp;                // make temp a new rear node
    
    Answer:
    

    The rear points to the last element. What is wanted is to place temp after the current rear, and then move rear to point to the newly placed last element. So, if we were wanting to enqueue 4 to the queue (1, 2, 3), we want:

    1 -> 2 -> 3 -> 4
    |              |
    front          rear

    Your solution lets temp cut in front of the current rear, and then moves rear to the cut position. It doesn't even cut properly, since the item before the rear is still pointing to the original rear. The rear isn't pointed to the last item anymore, and your queue would thus be in an inconsistent state.

    1 -> 2 -> 3
    |      4 -^
    |      |
    front  rear

  • 相关阅读:
    p 继承
    linux
    python 类的特性
    python 类的继承
    python 类
    pyhon对象初始
    coding++:win10家庭版升级专业版方案
    coding++:Java 获取request中的参数
    coding++:高并发解决方案限流技术--计数器--demo
    coding++:高并发解决方案限流技术---漏桶算法限流--demo
  • 原文地址:https://www.cnblogs.com/vigorz/p/10499160.html
Copyright © 2011-2022 走看看