啦啦啦拉拉裤 2021-08-07 01:44 采纳率: 69.1%
浏览 24
已结题

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);


  • 写回答

1条回答 默认 最新

  • Pink_Piggy 2021-08-07 11:55
    关注

    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几乎没用栈

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月15日
  • 已采纳回答 8月7日
  • 创建了问题 8月7日

悬赏问题

  • ¥20 求会6sv辐射传输模型,辅导(可py6s🙏🏻有偿
  • ¥15 .xla后缀的文件拖到excel里什么内容也没有怎么办
  • ¥20 Workbench中Mechanical打不开、闪退是什么原因?
  • ¥240 MapReduce应用实践 学生课程
  • ¥15 hlss视频显示AUTHORITY_INVALID
  • ¥15 MAX9296A+MAX96717,美信gmsl解串有人做过吗?
  • ¥15 求帮我解决一下inode 爆满的问题(有偿)
  • ¥15 关于#vscode#的问题:布料滤波算法中C++实现pcl在Vscode中pcl库没有#include <pcl>
  • ¥15 fpga:ov5640采集tft显示
  • ¥100 python怎么连接wxSQLite3加密的数据库