使用引用遍历链接列表不起作用



我正在尝试制作一个队列列表,我正在传递链接列表的引用,但它不起作用并给出错误。

在函数 'void insertDataToQueue(Node**, int)'中:| 请求"* temp"中的成员"next",其指针类型为"节点* {aka node*}"(也许您打算使用"->"?

 void insertDataToQueue(Node **queueList, int burstTime){
    Node *newNode = new Node;
    newNode->burstTime = burstTime;
    newNode->next = NULL;
if(queueList == NULL){
    *queueList = newNode;
}
else{
    Node **temp = queueList;
    while(*temp != NULL)
        temp = *temp->next;
}
}

要遍历整个列表,只需一个简单的指向Node的指针就足够了:

void insertDataToQueue(Node **queueList, int burstTime){
    Node *newNode = new Node;
    newNode->burstTime = burstTime;
    newNode->next = NULL;
    if(queueList == NULL) {
        *queueList = newNode;
    }
    else {
        Node *temp = *queueList;
        // Find last element, ie element who "next" field is NULL
        while(temp->next != NULL) {
            temp = temp->next;
        }
        // Make last element to point to new element
        temp->next = newNode;
    }
}
<小时 />

现在,没有任何链接,我想(我希望)只是为了学习方面。因为C++您需要的每个容器。例如,您有std::liststd::queue谁是链表。对于生产代码,最好使用它而不是自己开发。

这个

*temp->next;

解析为

*(temp->next); 

因为->的优先级高于*,如果要先取消引用,然后再访问成员,可以使用括号:

(*temp)->next;

最新更新