اذهب إلى المحتوى

Ahmed Azzi2

الأعضاء
  • المساهمات

    10
  • تاريخ الانضمام

  • تاريخ آخر زيارة

آخر الزوار

لوحة آخر الزوار معطلة ولن تظهر للأعضاء

إنجازات Ahmed Azzi2

عضو مساهم

عضو مساهم (2/3)

1

السمعة بالموقع

  1. بارك الله فيه أنصحك بسلسلة الدكتور نور حمصي في التغذية البصرية:
  2. شكرا لك خطوات بسيطة لإنشاء موقع إلكتروني باستخدام خدمة مثل Webnode. هنا ملخص مبسط للخطوات: زيارة الموقع: ابدأ بكتابة webnode.com في متصفحك. إنشاء حساب: اضغط على "ابدأ بالإنشاء". أدخل اسم الموقع، عنوان بريدك الإلكتروني، وكلمة المرور. اضغط على "تسجيل وإنشاء" وانتظر حتى يتم نقلك إلى الصفحة التالية. اختيار نوع الموقع: ستعرض عليك خيارات مثل موقع شخصي، موقع شركة، أو متجر إلكتروني. اختر النوع الذي يناسب احتياجاتك. اختيار نموذج: اختر نموذجًا يناسب تصميم موقعك من النماذج المتاحة. اختر نموذجًا يكون سهل الاستخدام. بهذه الطريقة، يمكنك إنشاء موقع إلكتروني خاص بك بطريقة بسيطة وسريعة.
  3. بارك الله لك أخي وأدام سعادتك
  4. السلام عليكم بالنسبة لي أرشح لك OpenStreetMap (OSM) موقع الويب: OpenStreetMap
  5. السلام عليكم بالنسية لدورة الاستاذ حسين الربيعي في قناته بغداد الجديدة هي دورة قيمة جدا لكني أرشح لك دورة أخرى باذن الله تحقق لك مبتغاك
  6. السلام عليكم. تمام، سأستخدم أساليب أساسية وأقل تعقيدًا: #include <iostream> #include <fstream> #include <string> using namespace std; // Node structure struct Node { string s; string language; Node* next; Node* prev; Node(string str, string lang) : s(str), language(lang), next(nullptr), prev(nullptr) {} }; // DoublyLinkedList class class DoublyLinkedList { private: Node* head; Node* tail; public: DoublyLinkedList() : head(nullptr), tail(nullptr) {} // Add a word to the front of the list void AddFront(string str, string lang); // Add a word to the end of the list void AddBack(string str, string lang); // Add a word in alphabetical order void AddInOrder(string str, string lang); // Remove the front node void RemoveFront(); // Remove the back node void RemoveBack(); // Count words of a specific language int CountLanguage(string lang); // Search for a word int Search(string str); // Remove a specific word void RemoveWord(string str); // Overload the equality operator to compare lists bool operator==(const DoublyLinkedList& other); // Print the list for debugging void Print(); // Load data from file void LoadFromFile(const string& filename); }; // Add a word to the front of the list void DoublyLinkedList::AddFront(string str, string lang) { Node* newNode = new Node(str, lang); if (!head) { head = tail = newNode; } else { newNode->next = head; head->prev = newNode; head = newNode; } } // Add a word to the end of the list void DoublyLinkedList::AddBack(string str, string lang) { Node* newNode = new Node(str, lang); if (!tail) { head = tail = newNode; } else { newNode->prev = tail; tail->next = newNode; tail = newNode; } } // Add a word in alphabetical order void DoublyLinkedList::AddInOrder(string str, string lang) { Node* newNode = new Node(str, lang); if (!head || head->s >= str) { AddFront(str, lang); } else if (tail->s <= str) { AddBack(str, lang); } else { Node* current = head; while (current->next && current->next->s < str) { current = current->next; } newNode->next = current->next; newNode->prev = current; if (current->next) { current->next->prev = newNode; } current->next = newNode; } } // Remove the front node void DoublyLinkedList::RemoveFront() { if (!head) return; Node* temp = head; if (head == tail) { head = tail = nullptr; } else { head = head->next; head->prev = nullptr; } delete temp; } // Remove the back node void DoublyLinkedList::RemoveBack() { if (!tail) return; Node* temp = tail; if (head == tail) { head = tail = nullptr; } else { tail = tail->prev; tail->next = nullptr; } delete temp; } // Count words of a specific language int DoublyLinkedList::CountLanguage(string lang) { int count = 0; Node* current = head; while (current) { if (current->language == lang) { count++; } current = current->next; } return count; } // Search for a word int DoublyLinkedList::Search(string str) { int pos = 1; Node* current = head; while (current) { if (current->s == str) { return pos; } pos++; current = current->next; } return 0; // Not found } // Remove a specific word void DoublyLinkedList::RemoveWord(string str) { Node* current = head; while (current) { if (current->s == str) { if (current == head) { RemoveFront(); } else if (current == tail) { RemoveBack(); } else { current->prev->next = current->next; current->next->prev = current->prev; delete current; } return; } current = current->next; } } // Overload the equality operator bool DoublyLinkedList::operator==(const DoublyLinkedList& other) { Node* thisCurrent = head; Node* otherCurrent = other.head; while (thisCurrent && otherCurrent) { if (thisCurrent->s != otherCurrent->s || thisCurrent->language != otherCurrent->language) { return false; } thisCurrent = thisCurrent->next; otherCurrent = otherCurrent->next; } return !thisCurrent && !otherCurrent; } // Print the list void DoublyLinkedList::Print() { Node* current = head; while (current) { cout << "Word: " << current->s << ", Language: " << current->language << endl; current = current->next; } } // Load data from file void DoublyLinkedList::LoadFromFile(const string& filename) { ifstream file(filename); string str, lang; if (file.is_open()) { while (file >> str >> lang) { AddBack(str, lang); } file.close(); } else { cerr << "Unable to open file." << endl; } } // Main function int main() { DoublyLinkedList list1; DoublyLinkedList list2; DoublyLinkedList list3; list1.LoadFromFile("list1.txt"); list2.LoadFromFile("list2.txt"); list3.LoadFromFile("list3.txt"); // Test the functions list1.Print(); list2.Print(); list3.Print(); // Additional test code here... return 0; } التوضيحات - **Node Structure**: يحتوي على الحقلين `s` و `language` مع مؤشرين للإشارة إلى العنصر التالي والسابق. - **DoublyLinkedList Class**: ينفذ الطرق المطلوبة لتعديل القائمة. - **AddFront** و **AddBack**: لإضافة العقد في البداية أو النهاية. - **AddInOrder**: لإضافة العقد بترتيب أبجدي. - **RemoveFront** و **RemoveBack**: لإزالة العقد من البداية أو النهاية. - **CountLanguage**: لحساب الكلمات بلغة معينة. - **Search**: للبحث عن كلمة وإرجاع موقعها. - **RemoveWord**: لإزالة كلمة معينة. - **operator==**: لمقارنة قائمتين. - **Print**: لطباعة العناصر. - **LoadFromFile**: لتحميل البيانات من ملف. يمكنك استخدام هذا الكود كأساس وتجربة تشغيله مع ملفات نصية تتبع التنسيق المحدد. حظ موفق صديقي
×
×
  • أضف...