1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
| #include <iostream> using namespace std;
struct Node { int data; Node* prev; Node* next; Node(int d) : data(d), prev(nullptr), next(nullptr) {} };
class DoublyLinkedList { private: Node* head; Node* tail;
public: DoublyLinkedList() : head(nullptr), tail(nullptr) {}
void addAtEnd(int value);
void remove(int value);
void printList(); };
void DoublyLinkedList::addAtEnd(int value) { Node* newNode = new Node(value); if (head == nullptr) { head = newNode; tail = newNode; } else { newNode->prev = tail; tail->next = newNode; tail = newNode; } }
void DoublyLinkedList::remove(int value) { Node* temp = head; while (temp != nullptr) { if (temp->data == value) { if (temp->prev != nullptr) { temp->prev->next = temp->next; } else { head = temp->next; }
if (temp->next != nullptr) { temp->next->prev = temp->prev; } else { tail = temp->prev; }
delete temp; return; } temp = temp->next; } }
void DoublyLinkedList::printList() { Node* temp = head; while (temp != nullptr) { cout << temp->data << " "; temp = temp->next; } cout << endl; }
int main() { DoublyLinkedList list;
list.addAtEnd(1); list.addAtEnd(2); list.addAtEnd(3); list.printList();
list.remove(2); list.printList();
return 0; }
|