Consider the following implementation of the node and doubly linked-list:

Extend the class doubly_linked_list by adding the following methods:

*Largest method .This method should return the largest element in a doubly linked-list.

*Delete method. This method should delete the first occurrence of an element (value) from a doubly linked-list.

template <class type>
class node
{
public:
    type info;
    node<type> * next;// next
    node<type> * prev;//back

};

template <class type>
class doubly_linked_list
{
    //data members
private:
    node<type> *head, *tail;
    int length;
public:
    doubly_linked_list()
    {
        head = tail = NULL;
        length = 0;
    }
    bool isEmpty()
    {   // return (head==NULL);
        if (head == NULL)
            return true;
        else
            return false;
    }

    void Append(type e)
    {
        node<type> *newnode = new node<type>;
        newnode->info = e;
        if (isEmpty())
        {
            newnode->next = NULL;
            newnode->prev = NULL;
            head = newnode;
            tail = newnode;
        }
        else
        {
            tail->next = newnode;
            newnode->prev = tail;
            newnode->next = NULL;
            tail = newnode;
        }
        ++length;

    }

    void Display()
    {
        if (isEmpty()) { cout << "The linked list is empty !!!!"; return; }
        cout << "list elements: ";
        node<type> * current = head;
        while (current != NULL)
        {
            cout << current->info << " ";
            current = current->next;
        }
        cout << endl;

    }

    void ReverseDisplay()
    {
        if (isEmpty()) { cout << "The linked list is empty !!!!"; return; }
        cout << "Reverse list elements: ";
        node<type> * current = tail;
        while (current != NULL)
        {
            cout<< current->info<<" ";
            current = current->prev;
        }
        cout << endl;
    }

    void insert(type e, int index)
    {
        if (index< 1 || index>length + 1)
        {
            cout << "Invalid index !!!!"; return;
        }
        else
        {
            node<type> * newnode = new node <type>;
            newnode->info = e;
            if (index == 1)
            {
                newnode->prev = NULL;
                if (isEmpty())
                {
                    newnode->next = NULL;
                    head = tail = newnode;
                }
                else {
                    newnode->next = head;
                    head->prev = newnode;
                    head = newnode;
                }



            }
            else
            {
                node<type> * current = head;
                int i = 1;
                while (i != index - 1)
                {
                    current = current->next;
                    ++i;
                }

                if(current !=tail)
                { 
                current->next->prev = newnode;
                newnode->next = current->next;
                current->next = newnode;
                newnode->prev = current;
                }
                else
                {
                    current->next = newnode;
                    newnode->prev = current;
                    newnode->next = NULL;
                    tail = newnode;
                }

            }





        }
    }

};
rproffitt commented: Please avoid blank lines as exampled at line 134 to 138. What good is that? +15

Recommended Answers

All 2 Replies

A few problems here.

  1. "Reusable Code Snippet" is for you to share a working tested snippet along with you expounding what it is and does.
  2. Dumping code after what looks like a homework assignment rarely gets much more than "tell us where you see the issues."
  3. Edit or replace your post. Consider that few will complete your homework for you but most of us will help you if you tell us where you are stuck.

I've turned this topic into a general question instead of a featured code snippet.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.