I have created a LinkedList class that has a function for deleting the first element in the list and one that deletes the last element in the list. The first one is easy, after I delete the element, I set it to point to the next element. Works great. However, when I delete the last element, I have to point it to the previous element in the list which becomes the last at that point. I cannot figure out how to do this. Please advise. Here is the code:
void LinkedList::pop_front()
{
mFront->data = NULL;
mFront = mFront->next;
}
How can I get a function to delete the last element but reset the tail to point to the new tail?
void LinkedList::pop_back()
{
mBack->data = NULL;
...
}
class LinkedList
{
public:
// Default Constructor
// Purpose: Initializes an empty list
// Parameters: none
// Returns: none
LinkedList();
// The push_front function
// Purpose: add an item to the front of the list
// Parameters: a int item for the front
// Returns: none
void push_front(int data);
// The push_back function
// Purpose: insert an item into the back of the list
// Parameters: int item to add the the back
// Returns: none
void push_back(int data);
// The pop_front function
// Purpose: delete the item in the front of the list
// Parameters: none
// Returns: none
void pop_front();
// the pop_back function
// Purpose: remove the item at the end of the list
// Parameters: none
// Returns: none
void pop_back();
// The getFirst function
// Purpose: print the first item in the list
// Parameters: none
// Returns: none
void getFirst();
// the GetLast function
// Purpose: return the last item in the list
// Parameters: none
// Returns: none
void getLast();
void printList();
// the clear function
// Purpose: clear the list, free memory
// Parameters: none
// Returns: none
void clear();
// Destructor
// Purpose: clear up memory
// Parameters: none
// Returns: none
~LinkedList();
private:
LinkedList *mFront; // point to the front of our list
LinkedList *mBack; // point to the back of our list
LinkedList *next; // the next node
LinkedList *previous; // the previous node
int data; // our list data manipulator
Singly linked lists do not offer O(1) deletion of the last element. You’ll have to run through the whole list from the start to find the second-to-last element.