From 7c8cf9a2ca6820d5d84cb9c2b1f4a9303ed144e3 Mon Sep 17 00:00:00 2001 From: heimoshuiyu Date: Tue, 16 Mar 2021 08:28:56 +0800 Subject: [PATCH] week 3 comment and destory function --- week3/stack.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/week3/stack.c b/week3/stack.c index 325614f..96bba9f 100644 --- a/week3/stack.c +++ b/week3/stack.c @@ -1,3 +1,10 @@ +/* + * Author: Walter + * Student ID: 1930006025 + * Week_3 + * Stack + */ + #include #include #include @@ -6,6 +13,7 @@ #include "stack.h" +/* test function */ int main() { Stack stack; double val; @@ -31,13 +39,16 @@ int main() { } bool CreateStack(Stack *stack, int size) { + /* check */ assert(size > 0); + /* memory allocate */ stack->data = (double *)malloc(sizeof(double) * size); if (stack->data == NULL) { return false; } + /* init attribute */ stack->top = -1; stack->size = size; @@ -45,33 +56,46 @@ bool CreateStack(Stack *stack, int size) { } bool IsEmpty(Stack *stack) { + /* if empty, stack->top = -1 */ return stack->top < 0; } bool IsFull(Stack *stack) { + /* if full, stack->top = stack->size */ return stack->top >= stack->size; } bool Top(Stack *stack, double *x) { + /* check empty */ if (IsEmpty(stack)) { return false; } + + /* get top */ *x = stack->data[stack->top]; + return true; } bool Push(Stack *stack, double x) { + /* check */ if (IsFull(stack)) { return false; } + + /* push */ stack->data[++stack->top] = x; + return true; } bool Pop(Stack *stack, double *x) { + /* check */ if (IsEmpty(stack)) { return false; } + + /* get x, and top - 1 */ *x = stack->data[stack->top--]; return true; } @@ -79,8 +103,10 @@ bool Pop(Stack *stack, double *x) { void DisplayStack(Stack *stack) { double *top_p = stack->data + stack->top; + /* print the top pointer hint */ printf("top --> "); + /* loop for stack data */ for (; top_p >= stack->data; top_p--) { /* print top --> hint */ @@ -100,4 +126,7 @@ void DisplayStack(Stack *stack) { } void DestroyStack(Stack *stack) { + free(stack->data); + stack->size = 0; + stack->top = -1; }