Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I have a c++ code that does not compile. if you copy and paste the code into a c

ID: 3783906 • Letter: I

Question

I have a c++ code that does not compile.

if you copy and paste the code into a compiler you will notice the bugs

can you fix them and make it compile?

CODE:

#include <iostream>

#include <cstddef> //for NULL

using namespace std;

template <class listdata>

List<listdata> ::List()

{

    first = NULL;

    last = NULL;

    size = 0;

}

List<listdata> ::~List()

{

    Nodeptr cursor = first;

    Nodeptr temp;

    while(cursor != NULL)

    {

        temp = cursor->next;

        delete cursor;

        cursor = temp;

    }

}

listdata List:: getFirst()

{

      return first->data;

}

listdata List:: getLast()

{

      return last->data;

}

bool List:: isEmpty()

{

      return (size == 0);

}

int List:: getSize()

{

      return size;

}

void List<listdata>::printList()

{

    Nodeptr temp = first;

    while (temp != NULL)

    {

      cout << temp->data << " ";

    temp = temp->next;

    }

    cout << endl;

}

void List<listdata>:: removeLast()

{

    if (size == 0)

    {

        cout << "the list is empty, no element to remove!" << endl;

    }

    else if (first->next == NULL)

    {

    delete last;

    first = NULL;

    last = NULL;

    size = 0;

    }

    else

    {

        Nodeptr temp = first;

        while (temp->next != last)

        {

            temp = temp->next;

        }

        delete last;

        last = temp;

        last->next = NULL;

        size--;

    }

}

void List<listdata>:: removeFirst()

{

      if (size == 0)

      {

            cout << "the list is empty, there is nothing to remove!" << endl;

      }

      else if (size == 1)

      {

            delete first;

            first = last = NULL;

            size = 0;

      }

      else

      {

            Nodeptr temp= first;

            first = first->next;

            delete temp;

            size --;

      }

}

void List<listdata>:: insertLast (listdata data)

{

            if (size == 0)

            {

                  first = new Node(data);

                  last = first;

            }

            else

            {

                  last -> next = new Node(data);

                  last = last -> next;

            }

            size++;

}

void List<listdata>::insertFirst(listdata data)

{

    if (size==0)

    {

        first = new Node(data);

        last = first;

    }

    else

    {

        Nodeptr N = new Node(data);

        N->next = first;

       first = N;

    }

    size++;

}

Explanation / Answer

Hi Friend, I have fixed all compile time error.

Please let me know in case of any issue.

########### listdata.h ##########


template <class listdata>
class List{

public:
   List();
   ~List();
   listdata getFirst();
   listdata getLast();
   bool isEmpty();
   int getSize();
   void printList();
   void removeLast();
   void removeFirst();
   void insertLast (listdata data);
   void insertFirst(listdata data);

private:
struct Node
{
listdata data;
Node* next;
  
Node(listdata data): data(data), next(NULL){}
};
  
typedef struct Node* Nodeptr;
  
Nodeptr first;
Nodeptr last;
int size;

};

############# listdata.cpp ###########

#include <iostream>
#include <cstddef> //for NULL
#include <cstdlib>
#include "listdata.h"

using namespace std;


template <class listdata>
List<listdata> ::List()
{
first = NULL;
last = NULL;
size = 0;
}

template <class listdata>
List<listdata> ::~List()
{
Nodeptr cursor = first;
Nodeptr temp;
while(cursor != NULL)
{
temp = cursor->next;
delete cursor;
cursor = temp;

}
}

template <class listdata>
listdata List<listdata>:: getFirst()
{
return first->data;
}

template <class listdata>
listdata List<listdata>:: getLast()
{
return last->data;
}

template <class listdata>
bool List<listdata>:: isEmpty()
{
return (size == 0);
}

template <class listdata>
int List<listdata>:: getSize()
{
return size;
}

template <class listdata>
void List<listdata>::printList()
{
Nodeptr temp = first;
while (temp != NULL)
{
cout << temp->data << " ";
temp = temp->next;
}
cout << endl;
}

template <class listdata>
void List<listdata>:: removeLast()
{
if (size == 0)
{
cout << "the list is empty, no element to remove!" << endl;
}

else if (first->next == NULL)
{

delete last;
first = NULL;
last = NULL;
size = 0;

}

else
{

Nodeptr temp = first;

while (temp->next != last)
{

temp = temp->next;
}

delete last;
last = temp;
last->next = NULL;
size--;

}

}

template <class listdata>
void List<listdata>:: removeFirst()
{
if (size == 0)
{
cout << "the list is empty, there is nothing to remove!" << endl;
}

else if (size == 1)
{
delete first;
first = last = NULL;
size = 0;

}

else
{

Nodeptr temp= first;
first = first->next;
delete temp;
size --;

}
}

template <class listdata>
void List<listdata>:: insertLast (listdata data)
{
if (size == 0)
{
first = new Node(data);
last = first;
}

else
{
last -> next = new Node(data);
last = last -> next;
}

size++;
}

template <class listdata>
void List<listdata>::insertFirst(listdata data)
{
if (size==0)
{
first = new Node(data);
last = first;

}
else
{
Nodeptr N = new Node(data);
N->next = first;
first = N;
}

size++;

}