如何在不使用指针的情况下在引用中实现链表

时间:2016-05-17 04:59:00

标签: c++ pointers reference linked-list

在Java中,引用可以初始化为null。但是,在C ++中,它会导致问题。所以不确定如何使用reference-only来实现链表。

2 个答案:

答案 0 :(得分:2)

我不确定你为什么要在c ++中使用引用,因为在C ++中引用不能像你说的那样为null。如果到达链表的末尾,你会怎么做?

你唯一的解决方案(因为你是c ++的新手)就是使用这样的指针。

struct Node{
   int value;
   Node* next;
}

这样你可以将名为next的指针保留为null,这将表示链表的结尾。

答案 1 :(得分:2)

我不知道这个概念有多么有用,但您可以使用std::reference_wrapper,执行此操作,如下所示:

#include <iostream>
#include <list>
#include <functional>
using namespace std;

int main() {
    int a = 2, b = 6, c = 1;

    list<reference_wrapper<int>> mylist;
    mylist.push_back(a);
    mylist.push_back(b);
    mylist.push_back(c);

    for(auto x : mylist) {
        cout << x << " ";
    }
    cout << endl;
    a = 3; // <- this setting will modify mylist!

    for(auto x : mylist) {
        cout << x << " ";
    }
    return 0;
}

我建议学习C ++处理事物的方法,特别是你来自Java世界。 Demo!