C语言问题Stacks and Queues 队列,球da神忙帮,蟹蟹

请问这个应该怎么做?第一张是原题,第二张是机翻,下面第一个是stack.c,第二个是stack.h。请大lao帮我编程一下,蟹蟹。

img

img

#include <stdlib.h>
#include <stdio.h>
#include  "Stack.h"
 
struct stack {
    int items[MAX_SIZE];
    int size;  
};
 
 
Stack *stackCreate(void) {
    Stack *s = malloc(sizeof (struct stack));
    if(s == NULL) {
        fprintf(stderr,"Insufficient Memory\n");
        exit(EXIT_FAILURE);
    }
    s->size = 0;
    return s;
}
 
void stackPush(Stack *s, int item) {
    int index = s->size;
    if(s->size < MAX_SIZE) {
        s->items[index] = item;
        s->size++;
    } else {
        fprintf(stderr,"Stack full\n");
        stackDestroy(s);
        exit(EXIT_FAILURE);
    }
}


#define MAX_SIZE 100
 
typedef struct stack Stack;
 
Stack *stackCreate(void);
void stackPush(Stack *s, int item);
int stackTop(Stack *s);
int stackPop(Stack *s);
int stackSize(Stack *s);
void stackDestroy(Stack *s);


Stack.h

#pragma once

#define MAX_SIZE 100

struct stack {
    int items[MAX_SIZE];//存放在栈中的元素
    int top;//栈顶指针
};

typedef struct stack Stack;

void Inital(stack* s);
void stackPush(stack* s, int item);
int stackTop(stack* s);
void stackPop(stack* s);
int stackSize(stack* s);
void stackDestroy(stack* s);

Stack.c

#include <stdlib.h>
#include <stdio.h>
#include<malloc.h>

#include "Stack.h"

void Inital(stack* s)
{
    s->top = -1;
}

void stackPush(stack* s, int item) {
    if (s->top + 1 != MAX_SIZE)
    {
        s->items[s->top + 1] = item;
        s->top++;
    }
    else
    {
        fprintf(stderr, "Stack full\n");
        stackDestroy(s);
        exit(EXIT_FAILURE);
    }
}

int stackTop(stack* s)
{
    if (s->top == -1)
    {
        fprintf(stderr, "Stack empty\n");
        exit(EXIT_FAILURE);
    }
    return s->items[s->top];
}

void stackPop(stack* s)
{
    if (s->top == -1)
    {
        fprintf(stderr, "Stack empty\n");
        exit(EXIT_FAILURE);

    }
    --(s->top);
}

int stackSize(stack* s)
{
    return (s->top) + 1;
}

void stackDestroy(stack* s)
{
    s->top = -1;
}

balance.c

#include<stdio.h>
#include"Stack.h"

int main()
{
    int a = 0, b = 0, c = 0;

    stack s;
    Inital(&s);
    
    char ch;
    while ((ch = getchar()) != EOF)
    {
        stackPush(&s, ch);
        if (ch == '[')
        {
            ++a;
        }
        if (ch == ']')
        {
            --a;
        }
        if (ch == '{')
        {
            ++b;
        }
        if (ch == '}')
        {
            --b;
        }
        if (ch == '(')
        {
            ++c;
        }
        if (ch == ')')
        {
            --c;
        }
        else
        {
            continue;
        }
    }
    if (a == 0 && b == 0 && c == 0)
    {
        printf("Yes,balanced\n");
    }
    else
    {
        printf("No,not balanced\n");
    }
    stackDestroy(s);
}

我不晓得这道题让用栈的意义是啥子呢,要把从键盘输入的数据保存下来吗?不用栈不是也可以吗,我写的balance.c几乎没用栈