The array implementation of ZJU data structure 2019 spring stack

Just started to learn the data structure and implemented a simple stack instance. It is to print the output numbers in reverse order by adjusting the top subscript.

Be careful:
1. The alias Stack is actually a pointer to struct Stack. When applying for memory to place the structure, it should be sizeof (struct Stack).
2. When the array malloc is a single element volume * number of elements
3. A simple return value can be implemented in one line.

Type name: Stack
Data object set: a finite linear table with 0 or more elements.
Operation set: stack s stack with MaxSize length, stack element item ElementType
1. Stack createstack (int MaxSize): generates an empty stack with a maximum length of MaxSize;
2. Int isfull (stack S, int maxsize): judge whether the stack S is full;
3. Void push (stack s, ElementType item): push the element item into the stack;
4. Int isempty (stack S): judge whether stack S is empty;
5. ElementType pop (stack s): delete and return the stack top element;

#include <stdio.h>
#include <stdlib.h>
#define ERROR -1
#define MAXSIZE 1000
typedef int ElementType;
struct _stack
	int* array;
	int top;
	int maxSize;
typedef struct _stack* Stack;

Stack createStack(int size);
int isFull(Stack S);
void Push(Stack S,int elem);
int isEmpty(Stack S);
int Pop(Stack S);

int main(int argc, char const *argv[])
	Stack s=createStack(MAXSIZE);
	ElementType num;
		printf("%d\n",Pop(s) );
	return 0;

Stack createStack(int size)
	Stack currentPtr=(Stack)malloc(sizeof(struct _stack));
	return currentPtr;

int isFull(Stack S)
	return (S->top==S->maxSize-1);

void Push(Stack S,ElementType elem)
		printf("The stack is full, the elem cannot join in.\n");

int isEmpty(Stack S)
	return (S->top==-1);

ElementType Pop(Stack S)
		return ERROR;
	return (S->array[(S->top)--]);

Posted on Mon, 02 Dec 2019 15:37:25 -0500 by discobean