Написание операций работы с заданной структурой данных, в том числе операции, показывающей содержимое структуры после выполнения какого-либо действия с ней (Лабораторная работа № 3), страница 2

            getElement(q,&c);

            //Распечатываем

            printf("%c, ",c);

            //Кладем в другую очередь

            addElement(p,c);

      }

      printf("\n--------\n");

      //Перекладываем элементы обратно

      while(!isEmpty(p)) {

            getElement(p,&c);

            addElement(q,c);

      }

      return 1;

}

//Функция поиска элемента в очереди

//1 – элемент найден, 2 – не найден

int find(queue *q, char x) {

      //Если очередь пуста, в ней не может быть элементов

   if(isEmpty(q))return 0;

      //Иначе создаем промежуточную очередь

   queue *p=create();

   char c;

      //Флаг, который определяет, нашли мы или нет элемент

   int flag=0;

      //перебираем все элементы q

   while(!isEmpty(q)) {

            getElement(q,&c);

            addElement(p,c);

            if(c==x)flag=1;

      }

      //Складываем их обратно

      while(!isEmpty(p)) {

            getElement(p,&c);

            addElement(q,c);

      }

      //Если найден элемент возвращаем 1 – иначе 0

      if(flag==1)return 1;

      else return 0;

}

Файл demo.cpp

#include <conio.h>

#include <stdio.h>

//Подключаем файл очереди

#include "queue.cpp"

void main() {

      //Очищаем экран

      clrscr();

      char c = 0;

      char x=0;

      //Создаем пустую очередь

      queue *q=create();

      //Пока не нажмем 6…

      while(c!='6') {

            //Выводим меню

            printf("Menu.\n");

            printf("1. Dobavlenie elementa\n");

            printf("2. Udalenie elementa iz ocheredi\n");

            printf("3. Proverit' pusta li ochered'?\n");

            printf("4. Vivesti soderzhimoe ocheredi\n");

            printf("5. Naiti element.\n");

            printf("6. Vihod\n");

            //Получаем символ с клавиатуры

            c = getch();

            if(c=='1') {

                  //Убираем мусор из потока ввода

                  fflush(stdin);

                  printf("Enter the element: ");

                  scanf("%c",&x);

                  //Добавляем элемент в очередь

                  addElement(q,x);

                  printf("Element dobavlen.\n");

            } else if(c=='2') {

                  //Получаем элемент из очереди

                  int res = getElement(q,&x);

                  if(res==0) {

                        printf("Ochered pusta!\n");

                  } else {

                        printf("Element: %c\n",x);

                  }

            } else if(c=='3') {

                  //Проверяем очередь на пустоту

                  int r = isEmpty(q);

                  if(r==0) printf("Ochered ne pusta!\n");

                  else printf("Ochered pusta!\n");

            } else if(c=='4') {

                  //Выводим очередь

                  int res = printQueue(q);

                  if(res==0)printf("Ochered pusta!\n");

            } else if(c=='5') {

                  printf("Enter element to find:");

                  //Очищаем входной поток от мусора

                  fflush(stdin);

                  scanf("%c",&x);

                  //Ищем элемент

                  int res = find(q,x);

                  if(res==1) printf("Element found!\n");

                  else printf("Element not found!\n");

            }

            printf("\n\n");

      }

}


Тестирование

Меню программы:

Menu.

1. Dobavlenie elementa

2. Udalenie elementa iz ocheredi

3. Proverit' pusta li ochered'?

4. Vivesti soderzhimoe ocheredi

5. Naiti element.

6. Vihod

Добавим в очередь 3 элемента: a,b,c

1 – a – enter

1 – b – enter

1 – c – enter

Выведем содержимое очереди, 4

--------

a, b, c,

--------

Удалим элемент из очереди: 2

Element: a

Проверим содержимое очереди, 4

--------

b, c,

--------

Проверим, пуста ли очередь, 3

Ochered ne pusta!

Найдемэлемент a

Element not found!

Найдем элемент b

Element found!

Удалим элемент из очереди: 2

Element: b

Удалим элемент из очереди: 2

Element: c

Проверим, пуста ли очередь, 3

Ochered pusta!

Удалим элемент из очереди: 2

Ochered pusta!

Выход, 5