آموزش ++c, زبان c++

صف در سی پلاس پلاس (Queue in Cpp)

صف در سی پلاس پلاس

در این جلسه تیم کدگیت را با آموزش صف در سی پلاس پلاس همراهی کنید. این جلسه ابتدا در مورد صف توضیح می‌دهیم و سپس با کمک آرایه یک صف در سی پلاس پلاس پیاده سازی خواهیم کرد. همچنین پیش نیاز این آموزش شامل موارد زیر است:

  1. آشنایی با if
  2. آشنایی با توابع
  3. آشنایی با شی گرایی
  4. آشنایی با constructor

صف

ما در فرآیندهای روزانه صف‌های زیادی میبینیم مانند صف بانک یا صف نانوایی. حال ما میخواهیم با ویژگی صف آشنا شویم و سپس به پیاده سازی آن بپردازیم.

صف دارای دو ویژگی بارز است

  1. هر نفر برای اضافه شدن به صف باید به آخر صف برود.
  2. برای پاسخ به درخواست افراد درون صف به ابتدای صف مراجعه می کنید.

در سی پلاس پلاس برای نوع های مختلف میتوان یک صف تعریف کرد مثل String یا int یا …  و یا حتی برای Objectهایی که خودمان تعریف میکنیم و میسازیم. در این جا ما به پیاده سازی صف از جنس int میپردازیم.

یک کلاس به نام Queue داریم که به صورت زیر است.

#define SIZE 1000



class Myqueue

{

    int *arr;

    int capacity;

    int front; 

    int rear;  

    int count;



public:

    Myqueue(int size = SIZE);



    void dequeue();

    void enqueue(int x);

    int peek();

    int size();

    bool isEmpty();

    bool isFull();

};

Myqueue::Myqueue(int size) {

    arr = new int[size];

    capacity = size;

    front = 00;

    rear = -1;

    count = 00;

}





void Myqueue::dequeue() {

    if (isEmpty()) {

         cout << "UnderFlow\nProgram Terminated\n";

         exit(EXIT_FAILURE);

    }



    cout << "Removing " << arr[front] << '\n';



    front = (front + 1) % capacity;

    count--;

}



void Myqueue::enqueue(int item) {

    if (isFull()) {

         cout << "OverFlow\nProgram Terminated\n";

         exit(EXIT_FAILURE);

    }



    cout << "Inserting " << item << '\n';



    rear = (rear + 1) % capacity;

    arr[rear] = item;

    count++;

}



int Myqueue::peek() {

    if (isEmpty()) {

         cout << "UnderFlow\nProgram Terminated\n";

         exit(EXIT_FAILURE);

    }

    return arr[front];

}



int Myqueue::size() {

    return count;

}



bool Myqueue::isEmpty() {

    return (size() == 0);

}



bool Myqueue::isFull() {

    return (size() == capacity);

}

در این کلاس از یک آرایه برای نگه داشتن اعضای صف استفاده کردیم.

سپس یک کلاس برای تست یک صف نیاز داریم.

int main() {

    Myqueue q(5);



    q.enqueue(1);

    q.enqueue(2);

    q.enqueue(3);



    cout << "Front element is: " << q.peek() << endl;

    q.dequeue();



    q.enqueue(4);



    cout << "Queue size is " << q.size() << endl;



    q.dequeue();

    q.dequeue();

    q.dequeue();



    if (q.isEmpty())

         cout << "Queue Is Empty\n";

    else

         cout << "Queue Is Not Empty\n";



    return 0;

}

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *