1: #include "List.h"
2: #include <iostream>
3:
4: using namespace std;
5: List::List(void){
6: headNode = new Node();
7: headNode->setNext(0);
8: currentNode = 0;
9: lastCurrentNode = 0;
10: size = 0;
11: }
12:
13: List::~List(void)
14: {
15: }
16:
17: void List::add (int addObject)
18: {
19: Node * newNode = new Node();
20: newNode->set(addObject);
21: if( currentNode != 0 )
22: {
23: newNode->setNext(currentNode->getNext());
24: currentNode->setNext( newNode );
25: lastCurrentNode = currentNode;
26: currentNode = newNode;
27: }
28: else
29: {
30:
31: newNode->setNext(0);
32: headNode->setNext(newNode);
33: lastCurrentNode = headNode;
34: currentNode = newNode;
35: }
36: size ++;
37: }
38:
39: /* get() class method */
40: int List::get()
41: {
42: if (currentNode != 0)
43: return currentNode->get();
44: }
45:
46: /* next() class method */
47: bool List::next()
48: {
49: if (currentNode == 0)
50: return false;
51:
52: lastCurrentNode = currentNode;
53: currentNode = currentNode->getNext();
54: if (currentNode == 0 || size == 0)
55: return false;
56: else
57: return true;
58: }
59:
60: /* Friend function to traverse linked list */
61: void traverse(List list)
62: {
63: Node* savedCurrentNode = list.currentNode;
64: list.currentNode = list.headNode;
65:
66: for(int i = 1; list.next(); i++)
67: {
68: cout << "\n Element " << i << " " << list.get();
69: }
70: list.currentNode = savedCurrentNode;
71: }
72:
73: /* Friend function to add Nodes into the list */
74: List addNodes()
75: {
76: List list;
77: list.add(2);
78: list.add(6);
79: list.add(8);
80: list.add(7);
81: list.add(1);
82: cout << "\n List size = " << list.size <<'\n';
83: return list;
84: }
85:
86: void List::start() {
87: lastCurrentNode = headNode;
88: currentNode = headNode;
89: }
90:
91: void List::remove() {
92: if( currentNode != NULL && currentNode != headNode) {
93: lastCurrentNode->setNext(currentNode->getNext());
94: delete currentNode;
95: currentNode = lastCurrentNode->getNext();
96: size--;
97: }
98: }
99:
100: int List::length()
101: {
102: return size;
103: }