pgrm_027.cpp (1974B)
1 /* Double linked list */ 2 3 #include <iostream> 4 using namespace std; 5 6 struct Node { 7 int info; 8 Node *next = nullptr; 9 Node *prev = nullptr; 10 }; 11 12 class doublelist { 13 private: 14 Node *head = nullptr; 15 16 public: 17 void insertBeg(); 18 void insertEnd(); 19 void display(); 20 ~doublelist(); 21 }; 22 23 void doublelist::insertBeg() { 24 Node *newNode = new Node; 25 cout << "Enter data: "; 26 cin >> newNode->info; 27 28 if (head == nullptr) { 29 head = newNode; 30 } else { 31 head->prev = newNode; 32 newNode->next = head; 33 head = newNode; 34 } 35 cout << "Node added successfully!\n"; 36 } 37 38 void doublelist::insertEnd() { 39 Node *newNode = new Node; 40 cout << "Enter data: "; 41 cin >> newNode->info; 42 43 if (head == nullptr) { 44 head = newNode; 45 } else { 46 Node *tmp = head; 47 while (tmp->next != nullptr) { 48 tmp = tmp->next; 49 } 50 tmp->next = newNode; 51 newNode->prev = tmp; 52 } 53 cout << "Node added successfully!\n"; 54 } 55 56 void doublelist::display() { 57 cout << "The list: "; 58 Node *tmp = head; 59 while (tmp != nullptr) { 60 cout << tmp->info << " "; 61 tmp = tmp->next; 62 } 63 cout << "nullptr\n"; 64 } 65 66 doublelist::~doublelist() { 67 Node *tmp; 68 while (head != nullptr) { 69 tmp = head; 70 head = head->next; 71 delete tmp; 72 } 73 cout << "List deleted\n"; 74 } 75 76 int main() { 77 doublelist obj; 78 int ch; 79 80 while (1) { 81 cout << "\nMenu:\n1. Insert Beg\n2. Insert End\n3. Display\n4. Exit\n"; 82 cout << "Enter choice: "; 83 cin >> ch; 84 85 switch (ch) { 86 case 1: 87 obj.insertBeg(); 88 break; 89 case 2: 90 obj.insertEnd(); 91 break; 92 case 3: 93 obj.display(); 94 break; 95 case 4: 96 return 0; 97 default: 98 cout << "Wrong choice\n"; 99 } 100 } 101 102 return 0; 103 }