الأربعاء، 18 نوفمبر 2020

كود للتطبيق على Queue بإستخدام linked list بلغة c++

 

كود للتطبيق على Queue بإستخدام linked list بلغة c++

كود للتطبيق على Queue بإستخدام linked list بلغة c++


مرحبا بكم امتابعي موقعنا الاوفياء مرحبا بكم في درس جديد حول كود للتطبيق على Queue بإستخدام linked list بلغة c++ اوبصيغة اخرى  implementation Queue using linked list c++ وهذا التطبيق مهم جدا في مادة هياكل البيانات او الداتا ستراكشر التي تدرس في الجامعات وتحديدا في قسم علوم الحاسب او الحاسبات والمعلومات ولذلك دعوني اشرح لكم ماهو الكيو قبل ان اضع الكود


Queue


Queues او الطابور حيث أن من يأتي أولاً يخرج أولا والمتأخر يقف في آخر الصف وهذا عكس الاستاك (stack) الذي قد سبق وقمت بشرحه في تدوينه سابقه باختصار : اول من يدخل اول من يخرج  وهذا هو شرح الكيو باختصار جدا


ما تحتاجة لكتابة الكود


سوف تحتاج الى برنامج او محرر للكتابة بلغة السي بلس بلس c plus plus وتم وضع مجموعة من البرامج المميزة للكتابة بلغة c++ والتي يستخدمها عدد كبير من المستخدمين في مقالة لدينا وهي بعنوان مجموعة من افضل البرامج والمواقع للكتابة بلغة السي بلس بلس - c plus plus compiler, يمكنك الاطلاع عليها وايضا تحتوي المقالة على مواقع مميزة اونلاين للكتابة والتي استخدمها انا شخصيا, وايضا سوف تحتاج الى ان تكون فاهم في لغة السي بلس بلس وايضا تم شرح كتابة اول كود برمجي لك في حياتك باللغة بكل سهولة والمقالة بعنوان اسهل طريقة لتعلم كتابة اول برنامج لك في لغة c++ بكل سهوله | c++ Tutorial | سي بلس بلس بالعربي, يمكنك الاطلاع عليها لمزيد من المعلومات.


اضغط مرتين لنسح الكود ( تطبيق الكيو )


#include <bits/stdc++.h> 
using namespace std; 
  
// A linked list (LL) node to store a queue entry 
class QNode { 
public: 
    int key; 
    QNode* next; 
}; 
  
// The queue, front stores the front node 
// of LL and rear stores the last node of LL 
class Queue { 
public: 
    QNode *front, *rear; 
}; 
  
// A utility function to create 
// a new linked list node. 
QNode* newNode(int k) 
{ 
    QNode* temp = new QNode(); 
    temp->key = k; 
    temp->next = NULL; 
    return temp; 
} 
  
// A utility function to create an empty queue 
Queue* createQueue() 
{ 
    Queue* q = new Queue(); 
    q->front = q->rear = NULL; 
    return q; 
} 
  
// The function to add a key k to q 
void enQueue(Queue* q, int k) 
{ 
    // Create a new LL node 
    QNode* temp = newNode(k); 
  
    // If queue is empty, then 
    // new node is front and rear both 
    if (q->rear == NULL) { 
        q->front = q->rear = temp; 
        return; 
    } 
  
    // Add the new node at 
    // the end of queue and change rear 
    q->rear->next = temp; 
    q->rear = temp; 
} 
  
// Function to remove 
// a key from given queue q 
QNode* deQueue(Queue* q) 
{ 
    // If queue is empty, return NULL. 
    if (q->front == NULL) 
        return NULL; 
  
    // Store previous front and 
    // move front one node ahead 
    QNode* temp = q->front; 
    delete(temp); 
  
    q->front = q->front->next; 
  
    // If front becomes NULL, then 
    // change rear also as NULL 
    if (q->front == NULL) 
        q->rear = NULL; 
    return temp; 
} 
  
// Driver code 
int main() 
{ 
    Queue* q = createQueue(); 
    enQueue(q, 10); 
    enQueue(q, 20); 
    deQueue(q); 
    deQueue(q); 
    enQueue(q, 30); 
    enQueue(q, 40); 
    enQueue(q, 50); 
    QNode* n = deQueue(q); 
    if (n != NULL) 
        cout << "Dequeued item is " << n->key; 
    return 0; 
} 
  
// This code is contributed by rathbhupendra


لمزيد من الاكواد




احمد محمود هو طالب جامعي يدرس في احدى الجامعات المصرية , تم تاسيس موقع جي كودرس في منتصف عام 2020 حيث يسعى الموقع الى مساعدة الطلاب في تعلم البرمجة وتوفير الاكواد الجاهزة للاستخدام لمساعدة الطلاب ً