2016-05-17 8 views
1

In Java kann eine Referenz auf Null initialisiert werden. In C++ wird jedoch ein Problem verursacht. Ich bin mir also nicht sicher, wie man nur referenziert, um die verknüpfte Liste zu implementieren.So implementieren Sie die verknüpfte Liste in Referenz ohne Verwendung des Zeigers

+5

Sie können nicht. Verwenden Sie Zeiger. –

+0

@lightrek Haben Sie in Betracht gezogen, Smartpointer zu verwenden? Wie unique_ptr? – bashrc

+0

Mögliches Duplikat von [Ist eine Linked-List-Implementierung ohne Verwendung von Zeigern möglich oder nicht?] (Http://stackoverflow.com/questions/3002764/is-a-linked-list-implementation-without-using-pointers-moegliche- oder nicht) – drorco

Antwort

2

Ich weiß nicht, wie nützlich das Konzept ist, aber Sie können es std::reference_wrapper, verwenden Sie wie folgt vor:

#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; 
} 

Ich würde empfehlen, C++ Möglichkeiten der Handhabung Dinge zu lernen, vor allem, dass Sie von Java-Welt kommen . Demo!

+0

Während Ihre Antwort richtig ist. Es kann jenseits des Verständnisses von OP liegen, wer sich der Zeiger/Referenzen in C++ nicht bewusst ist. Nichts für ungut! – Ajay

+0

@Ajay Ich stimme zu. Aber ich wollte nur Möglichkeiten zeigen :) –

2

Ich bin nicht sicher, warum Sie Referenzen in C++ verwenden sollten, da eine Referenz in C++ nicht null sein kann, wie Sie sagten. Was würden Sie tun, wenn Sie das Ende der verknüpften Liste erreichen?

Ihre einzige Lösung (Da Sie neu in C++ sind) ist die Verwendung von Zeigern wie folgt.

struct Node{ 
    int value; 
    Node* next; 
} 

Auf diese Weise können Sie den Zeiger neben als null genannt verlassen und das wäre das Ende der verknüpften Liste bedeuten.