Sie sind auf Seite 1von 3

/*

* Author: Andrei Soceanu


* E.T.T.I. 411 F
* Created on April 11, 2016, 1:41 PM
*/

#include <stdio.h>
#include <stdlib.h>
#include "arrayStack.h"

/*
struct ArrayStack {
char * array;
unsigned capacity;
unsigned aboveHead;
};
*/

struct ArrayStack * createArrayStack(unsigned capacity) {


struct ArrayStack * newStack = (struct ArrayStack *) malloc(sizeof(struct
ArrayStack));
newStack->capacity = capacity;
newStack->aboveHead = 0;
newStack->array = (char *) calloc(capacity, sizeof(char));
return newStack;
}

unsigned arrayStackSize(struct ArrayStack * stack) {


return stack->aboveHead;
}

int arrayStackIsEmpty(struct ArrayStack * stack) {


if (stack->aboveHead == 0) {
return 1;
} else {
return 0;
}
}

int arrayStackIsFull(struct ArrayStack * stack) {


if (stack->aboveHead == stack->capacity) {
return 1;
} else return 0;
}

void arrayStackPush(struct ArrayStack * stack, char newChar) {


if (arrayStackIsFull(stack) == 1) {
printf("\nStiva e plina!!!!!!\n");
}
stack->array[stack->aboveHead] = newChar;
stack->aboveHead++;
return;
}

char arrayStackPop(struct ArrayStack * stack) {


if (arrayStackIsEmpty(stack) == 1) {
printf("\nE GOALA!\n");
return 0;
}
stack->aboveHead--;
return stack->array[stack->aboveHead];
}

char arrayStackPeek(struct ArrayStack * stack) {


if (arrayStackIsEmpty(stack) == 1) {
printf("\nEROARE\n");
return 0;
}
return stack->array[stack->aboveHead - 1];
}

void deleteArrayStack(struct ArrayStack * stack) {


free(stack->array);
free(stack);
}

/*
* Author: Andrei Soceanu
* E.T.T.I. 411 F
* Created on April 11, 2016, 1:44 PM
*/

#include <stdio.h>
#include <stdlib.h>
#include "arrayStack.h"

int main(int argc, char** argv) {

struct ArrayStack * testStack = createArrayStack(100);


unsigned count = 0;
char c;
while ((c = getchar()) != '\n') {
count++;
arrayStackPush(testStack, c);
}
unsigned i;
for (i = 0; i < count; i++) {
printf("%c", arrayStackPop(testStack));
}
deleteArrayStack(testStack);
return (EXIT_SUCCESS);
}

Das könnte Ihnen auch gefallen