Advertisement
JoshuaNHardison

linkedlist.h

Oct 2nd, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.06 KB | None | 0 0
  1. #ifndef LINKEDLIST_H
  2. #define LINKEDLIST_H
  3.  
  4. template<typename t>
  5. class LinkedList
  6. {
  7.     private:
  8.         struct ListNode
  9.         {
  10.             t value;
  11.             struct ListNode *next;
  12.         };
  13.         ListNode *head;
  14.         ListNode *tail;
  15.         int numNodes;
  16.     public:
  17.         LinkedList()
  18.         {
  19.             head = NULL;
  20.             tail = NULL;
  21.         }
  22.        
  23.         ~LinkedList()
  24.         {
  25.             ListNode *nodePtr;
  26.             ListNode *nextNode;
  27.            
  28.             nodePtr = head;
  29.  
  30.             while (nodePtr != NULL)
  31.             {
  32.                 nextNode = nodePtr->next;
  33.                 delete nodePtr;
  34.                 nodePtr = nextNode;
  35.             }
  36.         }
  37.        
  38.         int getLength()
  39.         {
  40.             int counter = 0;
  41.             ListNode *nodePtr;
  42.    
  43.             nodePtr = head;
  44.            
  45.             while(nodePtr != tail)
  46.             {
  47.                 counter++;
  48.                 nodePtr = nodePtr->next;
  49.                 if (nodePtr == tail)
  50.                     counter++;
  51.             }
  52.             return counter;
  53.         }
  54.        
  55.         t getNodeValue(int position)
  56.         {
  57.             ListNode *nodePtr;
  58.             if(!head)
  59.                 return -1;
  60.             else
  61.             {
  62.                 if(position == 1)
  63.                     return head->value;
  64.                 nodePtr = head;
  65.                 int currentPos = 1;
  66.                 while(nodePtr != tail && position >= currentPos)
  67.                 {
  68.                     if(position == currentPos)
  69.                         return nodePtr->value;
  70.                     currentPos++;
  71.                     nodePtr = nodePtr->next;               
  72.                 }
  73.                
  74.             }
  75.             return -1;
  76.         }
  77.        
  78.         void appendNode(ListNode a)
  79.         {
  80.             ListNode *newNode;
  81.            
  82.             newNode = new ListNode;
  83.             newNode->value = a->value;
  84.             newNode->next = NULL;
  85.            
  86.             if (!head )
  87.             {
  88.                 head = newNode;
  89.                 tail = newNode;
  90.             }
  91.             else
  92.             {
  93.                 tail->next = newNode;
  94.                 tail = newNode;            
  95.             }
  96.         }
  97.        
  98.         void deleteNode(double num)
  99.         {
  100.             ListNode *nodePtr;
  101.             ListNode *previousNode;
  102.            
  103.             if (!head)
  104.                 return;
  105.            
  106.             if (head->value == num0
  107.             {
  108.                 nodePtr = head->next;
  109.                 delete head;
  110.                 head nodePtr;
  111.             }
  112.             else
  113.             {
  114.                 nodePtr = head;
  115.                
  116.                 while (nodePtr != NULL && nodePtr->value != num)
  117.                 {
  118.                     previousNode = nodePtr;
  119.                     nodePtr = nodePtr->next;                   
  120.                 }
  121.                
  122.                 if (nodePtr)
  123.                 {
  124.                     if(nodePtr == tail)
  125.                     {
  126.                         tail = previousNode;
  127.                     }
  128.                     previousNode->next = nodePtr->next;
  129.                     delete nodePtr;                
  130.                 }  
  131.             }
  132.         }
  133. };
  134. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement