C++ LAB

PROGRAM 1 PROGRAM 2 PROGRAM 3 PROGRAM 4 PROGRAM 5 PROGRAM 6 PROGRAM 7

PART- B

PROGRAM 1 PROGRAM 2 PROGRAM 3 PROGRAM 4 PROGRAM 5 PROGRAM 6 PROGRAM 7 PROGRAM 8

old

PROGRAM 8 PROGRAM 9 PROGRAM 10 PROGRAM 11 PROGRAM 12 PROGRAM 13 PROGRAM 14 . . .

Program to demonstrate the operations of doubly linked list

 
 


    /*

     * C++ Program to Implement Doubly Linked List 

     */

    #include <   iostream >

    #include <  cstdio >

    #include<  cstdlib >

  

    struct node

    {

        int info;

        struct node *next;

        struct node *prev;

    }*start;

  

    class double_llist

    {

        public:

            void create_list(int value);

            void add_begin(int value);

            void add_after(int value, int position);

            void delete_element(int value);

            void search_element(int value);

            void display_dlist();

            void count();

            void reverse();

            double_llist()

            {

                start = NULL;  

            }

    };

     
 

    int main()

    {

        int choice, element, position;

        double_llist dl;

        while (1)

        {

            cout< < endl << "----------------------------"<< endl;

            cout<< endl << "Operations on Doubly linked list" << endl;

            cout<< endl << "----------------------------"<< endl;         

            cout<< "1.Create Node" << endl;

            cout<< "2.Add at begining"<< endl;

            cout<< "3.Add after position"<< endl;

            cout<< "4.Delete"<< endl;

            cout<< " 5.Display"<< endl;

             cout<< "6.Quit"<< endl;

            cout<< "Enter your choice : ";

            cin >> choice;

            switch ( choice )

            {

            case 1:

                cout << "Enter the element: ";

                cin >> element;

                dl.create_list(element);

                cout<< endl;

                break;

            case 2:

                cout << "Enter the element: ";

                cin >> element;

                dl.add_begin(element);

                cout<< endl;

                break;

            case 3:

                cout << "Enter the element: ";

                cin >> element;

                cout << "Insert Element after postion: ";

                cin >> position;

                dl.add_after(element, position);

                cout <<   endl;

                break;

            case 4:

                if (start == NULL)

                {                      

                    cout << "List empty,nothing to delete"<< endl;   

                    break;

                }

                cout << "Enter the element for deletion: ";

                cin >> element;

                dl.delete_element(element);

                cout << endl;

                break;

            case 5:

                dl.display_dlist();

                cout << endl;

                break;

          

            case 6:

                exit(1);

            default:

                cout<<"Wrong choice"<< endl;

            }
            getch();

        }

      //  return 0;

    }

     

    /*

     * Create Double Link List

     */

    void double_llist::create_list(int value)

    {

        struct node *s, *temp;

        temp = new(struct node); 

        temp->info = value;

        temp->next = NULL;

        if (start == NULL)

        {

            temp->prev = NULL;

            start = temp;

        }

        else

        {

            s = start;

            while (s->next != NULL)

                s = s->next;

            s->next = temp;

            temp->prev = s;

        }

    }

     

    /*

     * Insertion at the beginning

     */

    void double_llist::add_begin(int value)

    {

        if (start == NULL)

        {

            cout<<"First Create the list."<< endl;

            return;

        }

        struct node *temp;

        temp = new(struct node);

        temp->prev = NULL;

        temp->info = value;

        temp->next = start;

        start->prev = temp;

        start = temp;

        cout<<"Element Inserted"<< endl;

    }

     

    

    void double_llist::add_after(int value, int pos)

    {

        if (start == NULL)

        {

            cout<< "First Create the list."<< endl;

            return;

        }

        struct node *tmp, *q;

        int i;

        q = start;

        for (i = 0;i < pos - 1;i++)

        {

            q = q->next;

            if (q == NULL)

            {

                cout<< "There are less than ";

                cout<< pos<<" elements."<< endl;

                return;

            }

        }

        tmp = new(struct node);

        tmp->info = value;

        if (q->next == NULL)

        {

            q->next = tmp;

            tmp->next = NULL;

            tmp->prev = q;      

        }

        else

        {

            tmp->next = q->next;

            tmp->next->prev = tmp;

            q->next = tmp;

            tmp->prev = q;

        }

        cout<< "Element Inserted"<< endl;

    }

     

    /*

     * Deletion of element from the list

     */

    void double_llist::delete_element(int value)

    {

        struct node *tmp, *q;

         /*first element deletion*/

        if (start->info == value)

        {

            tmp = start;

            start = start->next;  

            start->prev = NULL;

            cout<< "Element Deleted" << endl;

            free(tmp);

            return;

        }

        q = start;

        while (q->next->next != NULL)

        {   

            /*Element deleted in between*/

            if (q->next->info == value)  

            {

                tmp = q->next;

                q->next = tmp->next;

                tmp->next->prev = q;

                cout<< "Element Deleted"< < endl;

                free(tmp);

                return;

            }

            q = q->next;

        }

         /*last element deleted*/

        if (q->next->info == value)    

        { 	

            tmp = q->next;

            free(tmp);

            q->next = NULL;

            cout<<"Element Deleted"< <  endl;

            return;

        }

        cout<< "Element "<< value<<" not found"<< endl;

    }

     

    /*

     * Display elements of Doubly Link List

     */

    void double_llist::display_dlist()

    {

        struct node *q;

        if (start == NULL)

        {

            cout<< "List empty,nothing to display" << endl;

            return;

        }

        q = start;

        cout<< "The Doubly Link List is :"<< endl;

        while (q != NULL)

        {

            cout<< q- > info<< " < - > ";

            q = q->next;

        }

        cout<<"NULL"<< endl;

    }

     
 // end of program