Ann

Run Settings
LanguageC
Language Version
Run Command
#include <stdio.h> #include "Stack.h" int multipop (Stack_t *S, int k) { int value; while(k > 0) { if (StackisEmpty(S)) return 0; k--; value = StackPop(S); } //int size = S->size; //printf("Stack size: %d\n", size); return value; } int main () { Stack_t S; StackInit(&S, 20); StackPush(&S, 1); StackPush(&S, 2); StackPush(&S, 3); StackPush(&S, 4); StackPush(&S, 25); int n = multipop(&S, 3); printf("LAST ELEMENT: %d", n); }
#include <stdio.h> # include "Stack.h" bool StackIsFull(Stack_t *S) { return S-> top >=(int)(S->size - 1); } bool StackisEmpty(Stack_t *S) { return S->top < 0; } void StackInit (Stack_t *S, size_t size) { StackElement_t *elements = malloc(size * sizeof(StackElement_t)); if (elements == NULL) { fprintf(stderr,"Can't allocate memory"); exit(1); } S->elements = elements; S->top = -1; S->size = size; } void StackPush(Stack_t *S, StackElement_t e) { if (S->top >=(int)(S->size - 1)) { fprintf(stderr,"Stack Overflow\n"); exit(1); } S->elements[++S->top] = e; } void StackPrint(Stack_t *S) { int i; for(i = S->top; i >= 0; i--) printf("[%d]: %d\n",i, S->elements[i]); } void StackDestroy(Stack_t *S) { free(S->elements);// функция принимает указатель на стек S->elements = NULL; S->top = -1; S->size = 0; } StackElement_t StackPop(Stack_t *S) { if ( S-> top < 0) { fprintf(stderr,"Stack is empty\n"); exit(1); } return S->elements[S->top--]; } StackElement_t StackTop(Stack_t *S) { if ( S-> top < 0) { fprintf(stderr,"Stack is empty\n"); exit(1); } return S->elements[S->top]; }
#ifndef __STACK_H #define __STACK_H # include <stdlib.h> # include <stdbool.h> typedef int StackElement_t; typedef struct { StackElement_t *elements; // содержимое стека int top; //вершина стека size_t size; //размер стека } Stack_t; bool StackIsFull(Stack_t *S); bool StackisEmpty(Stack_t *S); void StackInit (Stack_t *S, size_t size); void StackPush(Stack_t *S, StackElement_t e); void StackDestroy(Stack_t *S); StackElement_t StackPop(Stack_t *S); StackElement_t StackTop(Stack_t *S); void StackPrint(Stack_t *S); #endif
Editor Settings
Theme
Key bindings
Full width
Lines