标题:关于用顺序栈反序输出字符串,弄不好啊,求大神。。
只看楼主
huchao1hao
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-4-1
结帖率:100%
已结贴  问题点数:20 回复次数:8 
关于用顺序栈反序输出字符串,弄不好啊,求大神。。
#include <stdio.h>
#define Stack_Size 50
typedef struct
{
    char elem[Stack_Size];
    int top;
}SeqStack;

void InitStack(SeqStack *s)
{
    s->top=-1;
}
int Push(SeqStack *s, char x)
{
    if(s->top==Stack_Size-1)
        return(0);
    s->top++;
    s->elem[s->top]=x;
    return(1);
}
int Pop(SeqStack *s, char *x)
{
    do
    {    *x=s->elem[s->top];
        printf("%s",*x);
        s->top--;
        return(1);
    }while(s->top==-1);
}

main()
{
    SeqStack *l;
    char x,y;
    l=(SeqStack *)malloc(sizeof(SeqStack));
    InitStack(l);;
    do
    {   
        scanf("%c",&x);
        Push(l,x);
    }while(x='\n');
    Pop(l,y);
}




纯新手,对着书写的,书上只有一段段,但是自己组合就弄不好,拜托大神看看哪里错了。。
搜索更多相关主题的帖子: void include return 字符串 
2013-04-01 22:15
不玩虚的
Rank: 9Rank: 9Rank: 9
来 自:四川
等 级:贵宾
威 望:10
帖 子:331
专家分:1301
注 册:2012-12-9
得分:0 
那有错

同学习......同进步....你帮我......我帮你.....上善若水.....
2013-04-01 22:50
huchao1hao
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-4-1
得分:0 
字符打进去按回车没有反序字符串输出额。。
2013-04-01 22:59
huchao1hao
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-4-1
得分:0 
没有人了木。
2013-04-02 17:38
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:0 
x='\n',啧啧,细心那,改成 x == '\n'


[fly]存在即是合理[/fly]
2013-04-02 17:43
huchao1hao
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-4-1
得分:0 
按楼上的说的,试了下输入字符串后提示执行错误额。。还是结构上有什么错误额,我太蠢了。。

[ 本帖最后由 huchao1hao 于 2013-4-2 21:26 编辑 ]
2013-04-02 21:25
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#define Stack_Size 50
typedef struct
{
    char elem[Stack_Size];
    int top;
}SeqStack;

void InitStack(SeqStack *s)
{
    s->top=-1;
}
int Push(SeqStack *s, char x)
{
    if(s->top==Stack_Size-1)
        return(0);
    s->top++;
    s->elem[s->top]=x;
    return(1);
}
int Pop(SeqStack *s, char *x)
{
    do
    {    *x=s->elem[s->top];
    printf("%c",*x);    //这里是粗心吧
    s->top--;
    }while(s->top!=-1);    //这里改成不等于
    
    return(1);
}

int main()
{
    SeqStack *l;
    char x,y;
    l=(SeqStack *)malloc(sizeof(SeqStack));
    InitStack(l);;
    do
    {    
        scanf("%c",&x);
        Push(l,x);
    }while(x != '\n');        //当时没细看,你应该是这个意思
    Pop(l,&y);
    return 0;
}


[fly]存在即是合理[/fly]
2013-04-02 21:38
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:20 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#define Stack_Size 50
typedef struct
{
    char elem[Stack_Size];
    int top;
}SeqStack;

void InitStack(SeqStack *s)
{
    s->top=-1;
}

int push(SeqStack *s, char e)
{
    if (s->top >= Stack_Size-1)
    {
        return 1;
    }
    s->elem[++s->top] = e;

    return 0;
}
int pop(SeqStack *s, char *e)
{
    if (s->top == -1)
    {
        return 1;
    }
    *e = s->elem[s->top--];
    return 0;
}

int main()
{
    char x, y;
    SeqStack *l;

    l=(SeqStack *)malloc(sizeof(SeqStack));
    InitStack(l);

    do
    {    
        x = getchar();
        push(l, x);
    }while(x != '\n');
    pop(l, &y);    //弹出栈顶的回车符

    while (l->top != -1)
    {
        pop(l, &y);
        putchar(y);
    }
    puts("");
    return 0;
}


[ 本帖最后由 azzbcc 于 2013-4-2 21:46 编辑 ]


[fly]存在即是合理[/fly]
2013-04-02 21:45
huchao1hao
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-4-1
得分:0 
感谢大神
2013-04-02 22:23



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-402776-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046906 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved