Сортировка стека в порядке убывания возраста работников - C (СИ)
Формулировка задачи:
Ребят, помогите, пожалуйста, создать стек с информацией о работниках фирмы и потом отсортировать его в порядке убывания возраста работников
Решение задачи: «Сортировка стека в порядке убывания возраста работников»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <malloc.h> struct Stack { int *A; int p; }; struct Stack S1; struct Stack S2; struct Stack S3; void Init() { S1.A=(int *) calloc(100,sizeof(int)); S2.A=(int *) calloc(100,sizeof(int)); S3.A=(int *) calloc(100,sizeof(int)); S1.p=0; S2.p=0; S3.p=0; } void push(struct Stack *S, int v) { (*S).A[(*S).p++]=v; } int pop(struct Stack *S) { return (*S).A[--(*S).p]; } int isEmpty(struct Stack *S) { return ((*S).p==0); } int main(int argc, char *argv[]) { int Arr[]={1,1,3,4,1,9,12,-7,2,-6,-2,7}; int i,k,max,v; Init(); for (i=0; i<sizeof(Arr)/sizeof(int); i++) push(&S1,Arr[i]); while (! isEmpty(&S1)) { max=pop(&S1); push(&S2,max); while (! isEmpty(&S1)) { v=pop(&S1); if (v > max) max=v; push(&S2,v); } while (! isEmpty(&S2)) { v=pop(&S2); if (v==max) push(&S3,v); else push(&S1,v); } } while (! isEmpty(&S3)) { printf("%d ",pop(&S3)); } free(S1.A); free(S2.A); free(S3.A); system("PAUSE"); return 0; }
Объяснение кода листинга программы
В этом коде используется стек для сортировки массива в порядке убывания. Список действий:
- Создаются три структуры стека с указателями на массивы, которые будут хранить значения.
- В функции инициализации стеки заполняются динамическими массивами, выделенными с помощью calloc.
- В цикле основные значения добавляются в стек S1.
- В цикле, пока стек S1 не пуст, извлекается максимальное значение, которое затем добавляется в стек S2.
- В цикле, пока стек S1 не пуст, извлекается следующее значение, и если оно больше максимального, то оно становится новым максимальным.
- В цикле, пока стек S2 не пуст, извлекается значение, и если оно равно максимальному, то оно добавляется в стек S3.
- В цикле, пока стек S3 не пуст, извлекаются значения и выводятся на экран.
- После выполнения всех операций освобождаются выделенные массивы.
- Выполняется команда PAUSE, чтобы программа не закрылась слишком быстро.
- Возвращается 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д