i'th node on Linked List
Dec 5, 2013 at 7:00pm UTC
This is what I have: I'm stuck in actually getting a node at a specific index from the linked list. I don't know how to implement it properly. add() function works fine -- except for get.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
#include <iostream>
using namespace std;
template <typename T>
class Node {
protected :
struct Nodelist {
Nodelist *next;
T val;
Nodelist(T value1, Nodelist *next1 = NULL) : val(value1), next(next1) {}
};
Nodelist *head;
public :
Node() {head = NULL; }
~Node();
void add(T val);
void remove(T val);
void displayList();
T& get(int i);
};
template <typename T>
T& Node<T>::get(int i) {
int len = 0;
Nodelist *temp = head->next;
while ((temp = temp->next) != NULL) {
if (i == len++)
return temp;
}
return NULL;
}
template <typename T>
void Node<T>::add(T val) {
if (head == NULL)
head = new Nodelist(val);
else {
Nodelist *nodePtr = head;
while (nodePtr->next != NULL)
nodePtr = nodePtr->next;
nodePtr->next = new Nodelist(val);
}
}
I tried implementing like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
#include <iostream>
#include "node.h"
using namespace std;
int main () {
Node<int > head;
head.add(2);
head.add(3);
head.add(7);
head.add(12);
cout << endl << endl;
cout << endl << "The i'th value: " << endl;
head.get(2);
cout << endl << endl;
return 0;
}
But I am getting errors like:
node.h:41:11: error: invalid initialization of reference of type 'int&' from expression of type 'Node<int>::Nodelist*'
node.h:43:10: error: invalid initialization of non-const reference of type 'int&' from an rvalue of type 'long int'
I would appreciate any help!
Topic archived. No new replies allowed.