C Complete the remove method in linkedliststackqueueh codeSo
(C++) Complete the remove() method in linkedliststackqueue.h
code:
Solution
Hi, Please find my omplementation.
Please let me know in case of any issuse.
template< typename T >
 class LinkedList{
 public:
 LinkedList(){ first = new __Node(0, 0); last = first; numItems = 0; }
 bool isEmpty(){ return numItems == 0; }
 void append(T* item);
 void insert(T* item);
 T* remove();
 private:
 class __Node{
 public:
 __Node(T* i, __Node* n = 0): item(i), next(n){ }
 T* getItem(){ return item; }
 __Node* getNext(){ return next; }
 void setItem(T* item){ this->item = item; }
 void setNext(__Node* next){ this->next = next; }
 private:
 T* item;
 __Node* next;
 };
 __Node* first;
 __Node* last;
 int numItems;
 };
 template< typename T >
 void LinkedList<T>::append(T* item){
 __Node* node = new __Node(item);
 last->setNext(node);
 last = node;
 numItems++;
 }
template< typename T >
 void LinkedList<T>::insert(T* item){
 __Node* node = new __Node(item, first->getNext());
 first->setNext(node);
 numItems++;
 }
// removing first element of list
 template< typename T >
 T* LinkedList<T>::remove(){
 // if list is empty
 if(numItems == 0){
 return NULL:
 }
// getting first node
 __Node *temp = first->getNext();
// if we have only one node
 if(temp->getNext() == NULL){
 first->setNext(NULL);
 last = first;
 }
 else{
 // deleting temp from list
 first->setNext(temp->getNext());
 }
 
 }
template< typename T >
 class Stack{
 public:
 bool isEmpty(){ return stack.isEmpty(); }
 void push(T* item){ stack.insert(item); }
 T* pop(){ stack.remove(); }
 private:
 LinkedList<T> stack;
 };
template< typename T >
 class Queue{
 public:
 bool isEmpty(){ return queue.isEmpty(); }
 void enqueue(T* item){ queue.append(item); }
 T* dequeue(){ queue.remove(); }
 private:
 LinkedList<T> queue;
 };


