Исходный код для круговой очереди с использованием массивов и указателей на C ++. Вы можете помочь?

3 Ответы


  • Массив
    1 - Массив выделяет пространство автоматически
    2 - Его размер не может быть изменен
    3 - Его нельзя переназначить
    4 - sizeof (имя массива) дает количество байтов, занятых массивом.
    Указатель
    1 - явно назначен для указания на выделенное пространство.
    2-Его размер можно изменить с помощью realloc ().
    3-указатель можно переназначить.
    4-sizeof (p) возвращает количество байтов, используемых для хранения переменной-указателя p.

    для получения дополнительной информации об этом посещении

  • / * программа с циклической очередью, использующая указатель * /
    / * каждый случай проверяется и отображается в программе * /
    #include <iostream>
    с использованием пространства имен std;
    struct node
    {
     int data;
     узел * ссылка;
    };
    class cirque
    {
    частный: узел * спереди, * сзади;
        int count;
    общественные: цирк ();
        void push (int n);
        void pop ();
        void display ();
        ~ цирк ();
    };
    cirque :: cirque ()
    {
     спереди = сзади = NULL;
     count = 0;
    }
    void cirque :: push (int n)
    {
     узел * темп;
     temp = новый узел;
     if (temp == NULL)
     {
      cout << "памяти меньше";
      возвращение;
     }
     temp-> data = n;
     если (перед == NULL)
     {
      перед = зад = темп;
     }
     еще
     {
     задняя-> ссылка = темп;
     задний = задний-> ссылка;
     }
     задний-> ссылка = передний;
     count ++;
     
    }
    void cirque :: pop ()
    {
     if (front == NULL)
     {
      cout << "ciccular очередь пуста";
      возвращение;
     }
     узел * темп;
     темп = перед;
     cout << endl << "удаленный элемент - это" <<front-> data;
     if (count> 0)
     front = temp-> ссылка;
     задняя-> ссылка = передняя;
     считать--;
     удалить темп;
    }
    void cirque :: display ()
    {
     if (front == NULL)
     {
      cout << endl << "очередь пуста";
      возвращение;
     }
     int local = count;
     узел * темп;
     темп = перед;
     cout << endl << "элементы очереди есть";
     while (локально)
     {
      cout << "" <<temp-> data;
      temp = temp-> ссылка;
      местный--;
     }
    }
    cirque :: ~ cirque ()
    {
     if (front == NULL)
     {
      cout << endl << "память не используется";
      возвращение;
     }
     узел * темп;
     int n = 0;
     в то время как (передняя-> ссылка! = задняя-> ссылка)
     {
      темп = передняя;
      передняя = передняя-> ссылка;
      удалить темп;
      cout << endl << ++ n << "" << "удалено";
     }
    }
    int main ()
    {
     cirque q;
     q.push (1);
     q.display ();
     q.push (2);
     q.display ();
     q.push (3);
     q.display ();
     q. толкать (4);
     q.display ();
     q.pop ();
     q.pop ();
     возврат 0;
    }
     
    / * вторая программа, использующая массив * /
    #include <iostream>
    using namespace std;
    #define MAX 7 / * для размера массива * /
    class cirq
    {
    private: int arr [MAX];
      int передний, задний, счетчик; / * подсчитать, чтобы узнать номер элемента. Присутствует в массиве. * /
    Public:
     cirq ();
     void push (int n);
     void pop ();
     void display ();
     ~ cirq ();
    };
    cirq :: cirq ()
    {
     спереди = сзади = -1;
     count = 0;
    }
    void cirq :: Push (int n)
    {
     if (count <MAX)
     {
      if (front == - 1) 
      {
       front = rear = 0;
      }
     else if (rear == MAX-1) / * если задняя часть находится в максимальном положении, то переместить ее в начало * /
       rear = 0;
      иначе
       задний ++;
      arr [тыл] = n;
      count ++;
     }
     else
     {
      cout << endl << "очередь заполнена, не входить сейчас";
     }
    }
    void cirq :: pop ()
    {
     if (count> 0)
     {
      cout << endl << "удаленный элемент" << arr [front];
      if (front == MAX-1) / * если передняя часть находится в максимальном положении, то перенести ее в начало * /
       front = 0;
      else
       front ++;
      считать--;
     }
     else
      cout << endl << "круговая очередь пуста";
    }
    void cirq :: display ()
    {
     int local = count;
     int front1 = front;
     if (local <0) / * если в quque нет элемента * /
     {
      cout << endl << "круговая очередь пуста";
     }
     else
     {
      cout << endl << "элементы круговой очереди:";
      в то время как (локально)
      {
       cout << endl << arr [front1];
       if (front1 == MAX-1) / * если передняя часть находится в максимальной позиции, то перенести ее в начало * /
        front1 = 0;
       иначе
        front1 ++;
       местный--;
      }
     }
    }
    cirq :: ~ cirq ()
    {
    }
    int main ()
    {
     cirq q;
     q.push (1);
     q.push (2);
     q.push (3);
     q.push (4);
     q.push (5);
     q.push (6);
     q.push (7);
     q.display ();
     q.pop ();
     q.display ();
     q.push (8);
     q.display ();
     q.push (9);
     q.display ();
     возврат 0;
    }
     

     

     
  • / * Программа циклической очереди с использованием массива на C * /
    # include
    #include
    # define MAX 5

    int cqueue_arr [MAX];
    int front = -1;
    int сзади = -1;

    main ()
    {
    int выбор;
    в то время как (1)
    {
    printf ("1.Insertn");
    printf ("2.Удалить");
    printf ("3.Displayn");
    printf ("4.Quitn");
    printf ("Введите свой выбор:");
    scanf ("% d", & выбор);

    переключатель (выбор)
    {
    случай 1:
    Вставить ();
    перерыв;
    случай 2:
    Del ();
    перерыв;
    случай 3:
    Display ();
    перерыв;
    случай 4:
    выход (1);
    по умолчанию:
    Printf («Неправильный выбор»);
    } / * Конец переключателя * /
    } / * Конец while * /
    } / * Конец main () * /

    insert ()
    {
    int added_item;
    if ((передняя == 0 && задняя == МАКС-1) || (передняя == задняя + 1))
    {
    printf ("Переполнение очереди n");
    возвращение;
    }
    if (front == -1) / * Если очередь пуста * /
    {
    front = 0;
    задний = 0;
    }
    else
    if (rear == MAX-1) / * задняя часть находится на последней позиции в очереди * /
    rear = 0;
    иначе
    задний = задний + 1;
    printf ("Ввести элемент для вставки в очередь:");
    scanf ("% d", & добавленный_элемент);
    cqueue_arr [сзади] = добавленный_элемент;
    } / * Конец вставки () * /

    del ()
    {
    if (front == -1)
    {
    printf ("Queue Underflown");
    возвращение ;
    }
    printf («Из очереди удален элемент:% dn», cqueue_arr [front]);
    if (front == back) / * в очереди только один элемент * /
    {
    front = -1;
    задний = -1;
    }
    else
    if (front == MAX-1)
    front = 0;
    иначе
    фронт = фронт + 1;
    } / * Конец del () * /

    display ()
    {
    int front_pos = front, rear_pos = rear;
    if (front == -1)
    {
    printf ("Очередь пуста");
    возвращение;
    }
    printf ("Элементы очереди: n");
    если (front_pos

Напишите свой ответ

Ваш ответ появится после модерации