Создание и работа с двунаправленной очередью созданной на основе массива
// 7_16С(1).cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include<stdio.h>
#include<conio.h>
#include<locale.h>
#include<windows.h>
const int MAX = 11;
int arr[MAX];
int start,finish;
int add_begin(int c){// добавить элемент в начало
if (start>0){
start--;
arr[start] = c;
return 0;
}
else
return -1;
}
int add_end(int c){//добавить элeмент в конец
if (finish<MAX){
arr[finish] = c;
finish++;
return 0;
}
else
return -1;
}
void write(){//вывод
for (int i = 0;i<MAX;i++)
printf("%i ",arr[i]);
printf("\n");
_getch();
}
int read(){//чтение с консоли
int c;
printf("Введите значение элемента: ");
scanf_s("%i",&c);
return c;
}
void delete_begin(){//удаление из начала
arr[start] = 0;
start++;
}
void delete_end(){//удаление из конца
finish--;
arr[finish] = 0;
}
void main_menu(){//функция отображения главного меню
int answer;
system("cls");
printf("1 - Добавить в начало\n");
printf("2 - Добавить в конец\n");
printf("3 - Удалить из начала\n");
printf("4 - Удалить из конца\n");
printf("5 - Вывести дек на консоль\n");
printf("0 - Закрыть программу\n");
printf("Введите номер выбранного пункта меню: ");
scanf_s("%i",&answer);
switch(answer){
case 1: {int c = read(); add_begin(c);main_menu();break;}
case 2: {int c = read(); add_end(c);main_menu();break;}
case 3: {delete_begin();main_menu();break;}
case 4: {delete_end();main_menu();break;}
case 5: {write();main_menu();break;}
case 0: {return;}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
start = MAX/2;
finish = start;
setlocale(LC_ALL,"Russian");
main_menu();
return 0;
}
Комментарии:
Нету комментариев для вывода...