Doubly Linked list

#include<iostream>
using namespace std;

/* Linked list structure */
struct list {
	struct list *prev;
	int data;
	struct list *next;
} *node = NULL, *first = NULL, *last = NULL, *node1 = NULL, *node2 = NULL;

class linkedlist {
	public: 

		/* Function for create/insert node at the beginning of Linked list */
		void insert_beginning() {
			list *addBeg = new list;
			cout << "Enter value for the node:" << endl;
			cin >> addBeg->data;
			if(first == NULL) {
				addBeg->prev = NULL;
				addBeg->next = NULL;
				first = addBeg;
				last = addBeg;
				cout << "Linked list Created!" << endl;
			}
			else {
				addBeg->prev = NULL;
				first->prev = addBeg;
				addBeg->next = first;
				first = addBeg;
				cout << "Data Inserted at the beginning of the Linked list!" << endl;
			}
		}

		/* Function for create/insert node at the end of Linked list */
		void insert_end() {
			list *addEnd = new list;
			cout << "Enter value for the node:" << endl;
			cin >> addEnd->data;
			if(first == NULL) {
				addEnd->prev = NULL;
				addEnd->next = NULL;
				first = addEnd;
				last = addEnd;
				cout << "Linked list Created!" << endl;
			}
			else {
				addEnd->next = NULL;
				last->next = addEnd;
				addEnd->prev = last;
				last = addEnd;
				cout << "Data Inserted at the end of the Linked list!" << endl;
			}
		}

		/* Function for Display Linked list */
		void display() {
			node = first;
			cout << "List of data in Linked list in Ascending order!" << endl;
			while(node != NULL) {
				cout << node->data << endl;
				node = node->next;
			}
			node = last;
			cout << "List of data in Linked list in Descending order!" << endl;
			while(node != NULL) {
				cout << node->data << endl;
				node = node->prev;
			}
		}
	
		/* Function for delete node from Linked list */
		void del() {
			int count = 0, number, i;
			node = node1 = node2 = first;
			for(node = first; node != NULL; node = node->next)
				cout << "Enter value for the node:" << endl;
			count++;
			display();
			cout << count << " nodes available here!" << endl;
			cout << "Enter the node number which you want to delete:" << endl;
			cin >> number;
			if(number != 1) {
				if(number < count && number > 0) {
					for(i = 2; i <= number; i++)
						node = node->next;
					for(i = 2; i <= number-1; i++)
						node1 = node1->next;
					for(i = 2; i <= number+1; i++)
						node2 = node2->next;
					node2->prev = node1;
					node1->next = node2;
					node->prev = NULL;
					node->next = NULL;
					node = NULL;
				}
				else if(number == count) {
					node = last;
					last = node->prev;
					last->next = NULL;
					node = NULL;
				}
				else
					cout << "Invalid node number!" << endl;
			}
			else {
				node = first;
				first = node->next;
				first->prev = NULL;
				node = NULL;
			}
			cout << "Node has been deleted successfully!" << endl;
		}
	
};

int main() {
	int op = 0;
	linkedlist llist = linkedlist();
	while(op != 4) {
		cout << "1. Insert at the beginning\n2. Insert at the end\n3. Delete\n4. Display\n5. Exit" << endl;
		cout << "Enter your choice:" << endl;
		cin >> op;
		switch(op) {
			case 1:
				llist.insert_beginning();
				break;
			case 2:
				llist.insert_end();
				break;
			case 3:
				llist.del();
				break;
			case 4:
				llist.display();
				break;
			case 5:
				cout << "Bye Bye!" << endl;
				return 0;
				break;
			default:
				cout << "Invalid choice!" << endl;
		}
	}
	return 0;
}



/* Output */
1. Insert at the beginning
2. Insert at the end
3. Delete
4. Display
5. Exit

Enter your choice:
1

Enter value for the node:
5

Linked list Created!

1. Insert at the beginning
2. Insert at the end
3. Delete
4. Display
5. Exit

Enter your choice:
1

Enter value for the node:
6

Data Inserted at the beginning of the Linked list!

1. Insert at the beginning
2. Insert at the end
3. Delete
4. Display
5. Exit

Enter your choice:
2

Enter value for the node:
7

Data Inserted at the end of the Linked list!

1. Insert at the beginning
2. Insert at the end
3. Delete
4. Display
5. Exit

Enter your choice:
4

List of data in Linked list inAscending order!
6
5
7

List of data in Linked list in Descending order!
7
5
6

List of data in Linked list
5
6

1. Insert at the beginning
2. Insert at the end
3. Delete
4. Display
5. Exit

Enter your choice:
3

List of data in Linked list inAscending order!
6
5
7

List of data in Linked list in Descending order!
7
5
6
3 nodes available here!

Enter the node number which you want to delete:
2

Node has been deleted successfully!
1. Insert at the beginning
2. Insert at the end
3. Delete
4. Display
5. Exit

Enter your choice:
5

Bye Bye!

Comments (0)

  • To add your comment please or

We use cookies to improve your experience on our site and to show you personalised advertising. Please read our cookie policy and privacy policy.

Got It!