سلام ,, امم :) عندي كود ببرنامج الدبل لينكد لست ,, ياليت حد يفهمني اياه ,, عندي بكره اصلا مناقشه ومافهمتو كثير ’’ #include <iostream>using namespace std;typedef int Object; struct DNode { DNode(Object e) { data = e; next = previous = NULL; } Object data; DNode *next, *previous;}; class DoubleLinkedList {public: DoubleLinkedList (void); ~DoubleLinkedList (void); int size (void); bool isEmpty (void); void addFirst (Object e); void addLast (Object e); void add (int index, Object e); Object getFirst (void); Object getLast (void); Object remove (Object e); void print (); void clear (void); void evenodd (); private: DNode *head, *tail; int count;};DoubleLinkedList::DoubleLinkedList() { head = tail = NULL; count = 0;} DoubleLinkedList::~DoubleLinkedList() { clear();} int DoubleLinkedList::size() {return count;} bool DoubleLinkedList::isEmpty() {return (count == 0);} void DoubleLinkedList::addFirst(Object e) {DNode *node = new DNode(e); if (tail == NULL)head = tail = node;else {node->next = head;head->previous = node;head = node;}count++;}void DoubleLinkedList::addLast(Object e) {DNode *node = new DNode(e); if (tail == NULL)head = tail = node;else {tail->next = node;node->previous = tail;tail = node;}count++;} void DoubleLinkedList::add(int index, Object e) {if (index < 0 || index > count)return; if (index == 0) {addFirst(e);} else if (index == count)addLast(e);else {DNode *node = new DNode(e);DNode *temp = head; for (int i = 1; i < index; i++)temp = temp->next; node->next = temp->next;node->previous = temp;temp->next = node;node->next->previous = node; count++;} } Object DoubleLinkedList::getFirst() {if (isEmpty())return 0; return head->data;} Object DoubleLinkedList::getLast() {if (isEmpty())return 0; return tail->data;} void DoubleLinkedList::evenodd(){ DNode *tail = head; DNode *prev = NULL; DNode *temp = head; while (tail->next != NULL) tail = tail->next; DNode *new_tail = tail; while (temp->data %2 != 0 && temp != tail) { new_tail->next = temp; temp = temp->next; new_tail->next->next = NULL; new_tail = new_tail->next; } if (temp->data%2 == 0) { head = temp; while (temp != tail) { if ( (temp->data)%2 == 0 ) { prev = temp; temp = temp->next; } else { prev->next = temp->next; temp->next = NULL; new_tail->next = temp; new_tail = temp; temp= prev->next; } } } else prev =temp; if (new_tail!=tail && (tail->data)%2 != 0) { prev->next = tail->next; tail->next = NULL; new_tail->next = tail; } return;} void DoubleLinkedList::print() {cout << "Nodes : ("; if (isEmpty())cout << ")."; else { DNode *temp = head; while (temp != tail) { cout << temp->data << ", "; temp = temp->next; } cout << temp->data << ")." << endl;}} void DoubleLinkedList::clear() {DNode *temp;while (head != NULL) {temp = head;head = head->next;head->previous = NULL;temp->next = NULL; }tail = NULL;count = 0;}int main(){DoubleLinkedList list;list.add(0, 2); cout << list.size() << " : "; list.print(); list.add(1, 4); cout << list.size() << " : "; list.print();list.add(2, 7); cout << list.size() << " : "; list.print();list.add(3, 8); cout << list.size() << " : "; list.print();list.add(4, 5); cout << list.size() << " : "; list.print(); list.evenodd();cout<<list.size() <<" : ";list.print();}يعطيكم العافيه :)double.cpp