Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef LINKEDLIST_H
- #define LINKEDLIST_H
- template<typename t>
- class LinkedList
- {
- private:
- struct ListNode
- {
- t value;
- struct ListNode *next;
- };
- ListNode *head;
- ListNode *tail;
- int numNodes;
- public:
- LinkedList()
- {
- head = NULL;
- tail = NULL;
- }
- ~LinkedList()
- {
- ListNode *nodePtr;
- ListNode *nextNode;
- nodePtr = head;
- while (nodePtr != NULL)
- {
- nextNode = nodePtr->next;
- delete nodePtr;
- nodePtr = nextNode;
- }
- }
- int getLength()
- {
- int counter = 0;
- ListNode *nodePtr;
- nodePtr = head;
- while(nodePtr != tail)
- {
- counter++;
- nodePtr = nodePtr->next;
- if (nodePtr == tail)
- counter++;
- }
- return counter;
- }
- t getNodeValue(int position)
- {
- ListNode *nodePtr;
- if(!head)
- return -1;
- else
- {
- if(position == 1)
- return head->value;
- nodePtr = head;
- int currentPos = 1;
- while(nodePtr != tail && position >= currentPos)
- {
- if(position == currentPos)
- return nodePtr->value;
- currentPos++;
- nodePtr = nodePtr->next;
- }
- }
- return -1;
- }
- void appendNode(ListNode a)
- {
- ListNode *newNode;
- newNode = new ListNode;
- newNode->value = a->value;
- newNode->next = NULL;
- if (!head )
- {
- head = newNode;
- tail = newNode;
- }
- else
- {
- tail->next = newNode;
- tail = newNode;
- }
- }
- void deleteNode(double num)
- {
- ListNode *nodePtr;
- ListNode *previousNode;
- if (!head)
- return;
- if (head->value == num0
- {
- nodePtr = head->next;
- delete head;
- head nodePtr;
- }
- else
- {
- nodePtr = head;
- while (nodePtr != NULL && nodePtr->value != num)
- {
- previousNode = nodePtr;
- nodePtr = nodePtr->next;
- }
- if (nodePtr)
- {
- if(nodePtr == tail)
- {
- tail = previousNode;
- }
- previousNode->next = nodePtr->next;
- delete nodePtr;
- }
- }
- }
- };
- #endif
Add Comment
Please, Sign In to add comment