鱼C论坛

 找回密码
 立即注册
查看: 1657|回复: 1

[已解决]共享栈问题求助

[复制链接]
发表于 2022-9-30 22:21:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
【问题描述】

请设计两个顺序栈共享一个存储空间形成的共享栈,完成共享栈的入栈、出栈和判断栈空、输出等四个函数,并在主函数调用以上基本函数进行测试。

为了便于测试,请大家设置共享栈的容量为12;

希冀平台测试数据及说明:

1)输出栈1; 空栈输出stack1:  empty

2)输出栈2; 空栈输出stack2:  empty

3)输入整数n;

4)将n以内(不含n)的奇数入栈1;若栈满,输出full,停止入栈

5)将n以内的偶数(不含n)入栈2;若栈满,输出full,停止入栈

6)栈1出栈, 输出该元素;

7)栈2出栈,输出该元素;

8)输出栈1;(从栈顶到栈底)

9)输出栈2;(从栈顶到栈底)

【样例输入】

6
【样例输出】
stack1:  empty

stack2:  empty

5

4

stack1:3 1

stack2:2

不清楚为啥报错,大佬救救我
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MaxSize 12
typedef struct
{
    int date[MaxSize];
    int top1;
    int top2;
} DStack;
void InitDSstack(DStack *S)
{
    S = (DStack *)malloc(sizeof(DStack));
    S->top1 = -1;
    S->top2 = MaxSize;
}
bool DStackEmpty(DStack *S, int i)
{
    if (i == 1)
    {
        return S->top1 == -1;
    }
    else
    {
        return S->top2 == MaxSize;
    }
}
void DispDstack(DStack *S, int i)
{
    if (DStackEmpty(S, i) == 1)
    {
        printf("stack%d:  empty\n");
    }
    else{if(i==1){
        while(S->top1!=-1){
            printf("stack%d:",i);
            printf("%d ",S->date[S->top1]);
            S->top1--;
        }printf("\n");
    }else{
         while(S->top2!=MaxSize){
            printf("stack%d:",i);
            printf("%d ",S->date[S->top2]);
            S->top2++;
        }printf("\n");
    }

    }
}
void Push(DStack *S, int i, int e)
{
    if (S->top1 + 1 == S->top2)
    {
        printf("full\n");
    }
    else
    {
        if (i == 1)
        {
            S->top1++;
            S->date[S->top1] = e;
        }
        else
        {
            S->top2--;
            S->date[S->top2] = e;
        }
    }
}

int main()
{
    DStack S;
    InitDSstack(&S);
    DispDstack(&S, 1);
    DispDstack(&S, 2);
    int n;
    scanf("%d", &n);
    for (int e = 1; e < n; e = e + 2)
    {
        Push(&S, 1, e);
    }
    for (int e = 2; e < n; e = e + 2)
    {
        Push(&S, 2, e);
    }
    DispDstack(&S, 1);
    DispDstack(&S, 2);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-30 23:12:32 | 显示全部楼层    本楼为最佳答案   
参考下这里吧。
https://blog.csdn.net/m0_46539322/article/details/123801817
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-20 11:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表