Double Linked list of Objects

السلام عليكم…لدي سؤال حول كيفية إنشاء a double linked list تحتوي على object و ليس int إن كان لديكم مثال لمشاركته معي سأكون ممتنة جدا شكرااااا جزيلا

  1. وعليكم السلام ورحمة الله، اهلا شيماء

    احنا بنعرف انو اي Linked list بتحتوي على Node كالآتي

    struct Node {
    int data;
    Node *prev;
    Node *next;
    };

    طبعا على فرض انو العناصر int الفكرة هون بدل ما تحتوي الـ Node على عنصر int بدنا نخليها تحتوي على Object مثلا

    struct Node {
    testClass item;
    Node* next;
    Node* prev;
    };

    وعلى اساس نفهم الفكرة اكثر خلينا نشوف مثال كامل

    #include <iostream>
    
    using namespace std;
    class testClass{
    public:
    int x=1;
    int y=2;
    testClass(){}
    };
    
    class doublyLinkedList {
    private:
    struct Node {
    testClass item;
    Node* next;
    Node* prev;
    };
    Node* first;
    Node* last;
    int count;
    
    public:
    doublyLinkedList() {
    first = NULL;
    last = NULL;
    count = 0;
    }
    
    void insertFirst(int x,int y)
    {
    Node*newNode = new Node;
    newNode->item.x = x;
    newNode->item.y = y;
    if (count == 0) {
    first = last = newNode;
    newNode->next = newNode->prev = NULL;
    }
    else {
    newNode->next = first;
    newNode->prev = NULL;
    first->prev = newNode;
    first = newNode;
    
    }
    count++;
    }
    
    void display() {
    if (first == NULL)
    {
    cout << "Empty List Can't Display...!";
    }
    else {
    Node* temp = first;
    while (temp != nullptr) {
    cout << temp->item.x << " " <<temp->item.y<<endl;
    temp = temp->next;
    }
    }
    cout << endl;
    
    }
    
    };
    
    int main()
    {
    doublyLinkedList dl;
    dl.insertFirst(5,6);
    dl.insertFirst(7,8);
    
    dl.display();
    
    return 0;
    }

    طبعا هذا البرنامج بوضح الفكرة لكن يفترض الي يصير كالآتي

    void insertFirst(int x,int y)
    

    المفروض الـ Parameters نحولهم الى Object من نوع testClass
    لنكون ماشيين بطريقة صحيحة
    كل التوفيق

    • 3
أضف اجابة

أضف اجابة

‫تصفح