问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言 帮忙改下栈,补充完整。

发布网友 发布时间:2023-12-19 20:57

我来回答

2个回答

热心网友 时间:2024-07-11 13:16

看看这样行不行(增加了显示栈的功能):
#include <stdio.h>

struct stack {
int arr[10];
size_t amount;
};

typedef struct stack stack_t;

int push(stack_t *stack, int s);
int pop(stack_t *stack, int *s);
void display(stack_t *stack);

int main(int argc, char *argv[]) {
stack_t stack;
int cmd, x, f;
stack.amount = 0;
while(1){
printf("\t0 pop \t1 push \t2 disp \t3 Exit\n\n");
printf("\tinput a command:");
cmd=getchar();
if(cmd=='3') break;
switch(cmd){
case '0':
f=pop(&stack, &x);
if(f)
printf("pop Error.\n");
else
printf("x=%d\n",x);
break;
case '1':
printf("x=?");
scanf("%d", &x);
f=push(&stack, x);
if(f)
printf("push Error.\n");
break;
case '2':
display(&stack);
break;
}
printf("Press any key to continue ... ");
getchar();
getchar();
}
}

int push(stack_t *stack, int s) {
if(stack->amount == 10) {
return -1;
}

stack->arr[stack->amount] = s;
stack->amount++;

return 0;
}

int pop(stack_t *stack, int *s) {
if(stack->amount == 0) {
return -1;
}

*s = stack->arr[stack->amount - 1];
stack->amount--;

return 0;
}
void display(stack_t *stack){
int i;
for(i=stack->amount-1; i>=0; i--)
printf("%d\n", stack->arr[i]);
}

热心网友 时间:2024-07-11 13:16

int main(int argc, char *argv[]) {

stack_t stack;
char s[11];
int flag, index = 0, result;

stack.amount = 0;

scanf("%s", s);

while(1){
scanf("%d", &flag);
if(flag == 1){
if(push(&stack, (int)(s[index]))){
printf("stack is full!\n");
continue;
}
index++;
printf("push %c to stack\n", s[index-1]);
}
else if(flag == 0){
if(pop(&stack, &result)){
printf("stack is empty!\n");
continue;
}
index--;
printf("pop result is %c\n", result);
}
else{
printf("invalid number!\n");
break;
}
}

return 0;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我网贷一万,手续费300,分24期,每期506.67,请问怎么计算月息,和年利率... 多普达手机铃音多普达手机铃声 【车载软件推荐】有车一族必备软件有哪些?好用的车主必备app 我画画时常被说我画画不动脑筋,弱弱的问一句,画画怎样动脑筋? 三星手机如何设置时间在桌面显示? 精确到十分位,要看小数点右边第一位 对吗 要把一个小数精确到十分位,就要看这个小数的( )A.十分位B.百分位C... 黑米算不算粗粮 存定期协议利率选是还是否? 同城上那些卖二手ndsi的是真的吗? 同一个手机号注册了两个微信,第一登不上了怎么办? 不满一年如何更改? 空调干燥器工作原理 谁能帮我一下需要更详细的点的不要什吗干燥器就是... 怎么把原来的微信好友转移到另一个上 怎么一年改两次 请问一个手机号注册了两个,但登不上另一个怎么办啊? 香格里拉:一个神奇而迷人的旅游景点 大部分的定焦和变焦镜头最佳画质的光圈都在F8吗,为什么所有的MTF图... 被封了,登录不上了,怎么解封146 哪些坚果补肾 赌博骗局算赌博还是诈骗 吴于廑、齐世荣世界史(六卷本)》版次有没有区别谢谢了,大神帮... 找首歌!高潮是 如果这样分手会让我更加自由。。。前面有一句是 如果... 我被封了,登不上去如何解封?13 静态体验荣威iMAX8,这台国产MPV或许会有不一样的感觉 短信推广APP应该怎么编辑短信5 硬盘变成USB的设备了? 为什么搜索用户不存在怎么添加 注册新后旧的怎么找回? winkawaks模拟器的录屏怎么上传 我的被封了,登不上去了,怎么办1 “那是我日夜思念,深深爱着的人纳,到底我该如何表达&quot;是那首歌里的词 被别人注销该怎么办? 那位高手知道为什么我的硬盘变成了USB那种连接方式了,怎么除...4 一张身份证绑定两个一个能用零钱支付一个不能用怎么回事?_百度... 佳能mp259和佳能mp250黑色墨盒能互用吗 佳能MP-250的墨盒型号? 防火阀易熔片怎么更换 sony vgn-fj77c/b内存升级 不满一年如何更改? 头发用什么量词来形容 未满一年怎么改第二次 不满足一年想改 ...HM55 i5处理器 320G硬盘 独立显卡1G 内存2G 升级方案 硬盘能加到50... ...2G内存~为什么玩《实况足球2008》看过场动画会卡呢? 青田县中考成绩什么时候公布 为什么人总是不能脚踏实地的生活1 血管前间隙结节是什么病,做的心原ct心血管没事,但胸部平扫有,血管前... 运城姚孟考场科目四考试时间 微信更换绑定手机号后,之前的那个手机号还可以重新申一个吗?