Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <checkValid.h>
- #include <windows.h>
- using namespace std;
- struct st{
- int num;
- st* next;
- };
- void s_push(st* top, int in);
- void s_del(st* top);
- void s_print(st* top);
- void initStack(st* first,int num);
- void arr_push(int* arr,int in,int counter);
- void addCell(int* arr,int counter);
- void arr_print(int* arr,int counter);
- void arr_del(int* arr,int counter);
- void l_push(st* first,int num);
- void initLine(st* first,int num);
- void l_print(st* first);
- void l_del(st* first);
- void al_push(int* arr,int in,int counter);
- void al_print(int* arr, int counter);
- void al_del(int* arr,int counter);
- int menu();
- int menu2();
- bool stackFlag = false;
- bool lineFlag = false;
- int main()
- {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- int scounter = 5;
- int lcounter = 5;
- st* stack = new st;
- st* line = new st;
- int* arrSt = new int[scounter];
- int* arrL = new int[lcounter];
- for(int i =0;i<scounter;i++){
- arrSt[i] = 0;
- }
- for(int i =0;i<lcounter;i++){
- arrL[i] = 0;
- }
- int i;
- st* q;
- bool iterator_flag = true;
- while(true){
- switch(menu()){
- case 1:
- while(iterator_flag){
- switch(menu2()){
- case 1:
- cout << "Введите значение : ";
- cin >> i;
- arr_push(arrSt,i,scounter);
- break;
- case 2:
- arr_del(arrSt,scounter);
- cout << "Удалено\n";
- break;
- case 3:
- arr_print(arrSt,scounter);
- cout << "\n";
- break;
- case 4:
- cout << arrSt[0] << "\n";
- break;
- case 5:
- for(int p = 0;p<scounter;p++){
- arrSt[p] = 0;
- }
- cout << "Очишенно\n";
- break;
- case 6:
- cout << "Проверенно";
- break;
- case 7:
- iterator_flag = false;
- break;
- }
- }
- break;
- case 2:
- while(iterator_flag){
- switch(menu2()){
- case 1:
- cout << "Введите значение : ";
- cin >> i;
- s_push(stack,i);
- break;
- case 2:
- s_del(stack);
- cout << "Удалено\n";
- break;
- case 3:
- s_print(stack);
- cout << "\n";
- break;
- case 4:
- cout << stack->num;
- break;
- case 5:
- while(stack != NULL){
- q = stack->next;
- stack = NULL;
- stack = q;
- }
- cout << "Очишенно\n";
- break;
- case 6:
- cout << "Проверенно";
- break;
- case 7:
- iterator_flag = false;
- break;
- }
- }
- break;
- case 3:
- while(iterator_flag){
- switch(menu2()){
- case 1:
- cout << "Введите значение : ";
- cin >> i;
- al_push(arrL,i,lcounter);
- break;
- case 2:
- al_del(arrL,lcounter);
- cout << "Удалено\n";
- break;
- case 3:
- al_print(arrL,lcounter);
- break;
- case 4:
- cout << arrL[0];
- break;
- case 5:
- for(int p = 0;p<lcounter;p++){
- arrL[p] = 0;
- }
- cout << "Очишенно\n";
- break;
- case 6:
- cout << "Проверенно";
- break;
- case 7:
- iterator_flag = false;
- break;
- }
- }
- break;
- case 4:
- while(iterator_flag){
- switch(menu2()){
- case 1:
- cout << "Введите значение : ";
- cin >> i;
- l_push(line,i);
- break;
- case 2:
- l_del(line);
- cout << "Удалено\n";
- break;
- case 3:
- l_print(line);
- break;
- case 4:
- cout << line->num;
- break;
- case 5:
- while(line != NULL){
- q = line->next;
- line = NULL;
- line = q;
- }
- cout << "Очишенно\n";
- break;
- case 6:
- cout << "Проверенно";
- break;
- case 7:
- iterator_flag = false;
- break;
- }
- }
- break;
- case 5:
- return 0;
- break;
- }
- }
- }
- void s_push(st* top, int in){
- if(stackFlag == false){
- initStack(top,in);
- }else{
- st* q = new st;
- q->num = top->num;
- q->next = top->next;
- top->next = q;
- top->num = in;
- }
- }
- void s_del(st* top){
- if(top->next == NULL){
- top ->num = NULL;
- stackFlag = false;
- }else{
- st* q = top->next;
- top->num = q->num;
- top->next = q->next;
- }
- }
- void s_print(st* top){
- st* q = top;
- do{
- cout << q->num << " ";
- q = q->next;
- }while(q != NULL);
- }
- void initStack(st* top,int num){
- top->num = num;
- top->next = NULL;
- stackFlag = true;
- }
- void arr_push(int* arr,int in,int counter){
- bool overflow_flag = true;
- for(int i = counter;i>=0;i--){
- if(arr[i] == 0){
- arr[i] = in;
- overflow_flag = false;
- break;
- }
- }
- if(overflow_flag == true){
- addCell(arr,counter);
- arr[4] = in;
- }
- }
- void addCell(int* arr,int counter){
- int* tmp = new int[counter+5];
- for(int i = 0;i<counter+5;i++){
- tmp[i] = 0;
- }
- for(int i = 0;i<counter;i++){
- tmp[i+5] = arr[i];
- }
- delete [] arr;
- arr = tmp;
- counter+=5;
- }
- void arr_print(int* arr,int counter){
- cout << "\n";
- for(int i = 0;i<counter;i++){
- cout << arr[i] << " ";
- }
- }
- void arr_del(int* arr,int counter){
- for(int i = 0;i<counter;i++){
- if(arr[i]!=0){
- arr[i] = 0;
- break;
- }
- }
- }
- void l_push(st* first,int num){
- if(lineFlag == false){
- initLine(first,num);
- }else{
- st* q = new st;
- st* p = first;
- while(p->next != NULL){
- p = p->next;
- }
- p->next = q;
- q->num = num;
- q->next = NULL;
- }
- }
- void initLine(st* first,int num){
- first->num = num;
- first->next = NULL;
- lineFlag = true;
- }
- void l_print(st* first){
- st* p = first;
- while(p != NULL){
- cout << p->num << " ";
- p = p->next;
- }
- }
- void l_del(st* first){
- st* q = first->next;
- delete first;
- first = q;
- }
- void al_push(int* arr,int in,int counter){
- bool overflow_flag = true;
- for(int i = 0;i<counter;i++){
- if(arr[i] == 0){
- arr[i] = in;
- overflow_flag = false;
- break;
- }
- if(overflow_flag == true){
- addCell(arr,counter);
- arr[counter+5] = in;
- }
- }
- }
- void al_print(int* arr, int counter){
- for(int i = 0;i<counter;i++){
- cout << arr[i] << " ";
- }
- }
- void al_del(int* arr,int counter){
- for(int i = 0;i<counter-1;i++){
- arr[i] = arr[i+1];
- }
- }
- int menu(){
- int read;
- cout << "1 Стек через массив\n";
- cout << "2 Стек через список\n";
- cout << "3 Очередь через массив\n";
- cout << "4 Очередь через список\n";
- cout << "5 Выход\n";
- while(checkValid() == false){}
- read = temp;
- return read;
- }
- int menu2(){
- int read;
- cout << "1 Вставить\n";
- cout << "2 Удалить\n";
- cout << "3 Печать\n";
- cout << "4 Показать верхний\n";
- cout << "5 Очистка\n";
- cout << "6 Проверить пусто ли \n";
- cout << "7 Назад\n";
- while(checkValid() == false){}
- read = temp;
- return read;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement