Java Programming Efficiently implement a queue class using a
Java Programming:
Efficiently implement a queue class using a singly linked list, with no header or tail nodes?
Solution
int main() {
// Test data
List<int> l1 = List<int>();
for(int i = 0; i < 7; ++i) l1.push_back(i+1);
List<int> l2 = List<int>();
for(int i = 0; i < 7; ++i) l2.push_back(i+11);
List<int> l3 = List<int>();
for(int i = 0; i < 7; ++i) l3.push_back(i+4);
cout << \"Test list: \" << l1 << endl;
cout << \"Finding 3: \" << *find(l1.begin(), l1.end(), 3) << endl;
cout << \"Finding 8: \" << *find(l1.begin(), l1.end(), 8) << endl;
cout << \"Finding 6: \" << *find(l1.begin(), l1.end(), 6) << endl;
cout << \"Finding 0: \" << *find(l1.begin(), l1.end(), 0) << endl << endl;
cout << \"Test list 1: \" << l1 << endl;
cout << \"Test list 2: \" << l2 << endl;
cout << \"Unioned list: \" << list_union(l1,l2) << endl;
cout << \"Test list 1: \" << l1 << endl;
cout << \"Test list 3: \" << l3 << endl;
cout << \"Unioned list: \" << list_union(l1,l3) << endl << endl;
cout << \"Test list 1: \" << l1 << endl;
List<int>::iterator i = --(l1.end()); // end() actually returns the null sentinel
cout << \"Iterating from the end: \" << *i << endl;
for (; i != l1.begin(); --i);
cout << \"To the beginning: \" << *i << endl;
cout << \"Test list 1: \" << l1 << endl;
i = l1.begin();
cout << \"Iterator constructed from beginning: \" << *i << endl;
cout << \"Iterator + 4: \" << *(i+4) << endl << endl;
cout << \"Test list 1: \" << l1 << endl;
cout << \"Test list 2: \" << l2 << endl;
l1.splice((l1.begin()++), l2);
cout << \"List 2 spliced into list 1 before second elem: \" << l1 << endl << endl;
cout << \"Test list 1: \" << l1 << endl;
Stack<int> s = Stack<int>(l1);
cout << \"Turned into a stack: \" << s << endl;
cout << \"Pop: \" << *s.pop() << endl;
cout << \"Push 999: \" << s.push(999) << endl;
cout << \"New stack: \" << s << endl;
}

