| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 388 人关注过本帖
标题:一个关于栈的小问题,麻烦各位大大了
只看楼主 加入收藏
jackienupt
Rank: 1
等 级:新手上路
帖 子:29
专家分:9
注 册:2011-9-24
结帖率:75%
收藏
已结贴  问题点数:10 回复次数:5 
一个关于栈的小问题,麻烦各位大大了
#include "stdio.h"
#define maxsize 100
typedef char datatype;
typedef struct
{
    datatype data[maxsize];
    int top;
    int stacksize;
}seqstack;


void INITSTACK(seqstack * s)
{
    s->top=-1;
    s->stacksize=maxsize;
}

void PUSH(seqstack * s,int x)
{
    if(s->top=maxsize-1)
    {
    printf("overflow");
        return NULL;
    }
    s->top++;
    s->data[s->top]=x;
}

int POP(seqstack * s)
{
    if(s->top==-1)
    {   
        printf("underflow");
    return NULL;
    }
   
    return(s->data[s->top]);
    s->top--;
   
}

void print()
{
    seqstack * s;
    int x;
    INITSTACK(s);
    printf("请输入数字:");
    scanf("%d",&x);
    while(x!=-1)
    {
        PUSH(s,x);
        scanf("%d",&x);
    }
    while(s->top!=-1)
    {
        x=POP(s);
        printf("%d",x);
    }
}

void main()
{
    print();
}

麻烦看看程序错在哪边?  谢谢了
搜索更多相关主题的帖子: top void include return 
2012-03-16 16:35
nicum
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:180
专家分:712
注 册:2011-2-1
收藏
得分:8 
void PUSH(seqstack * s,int x)
{
    if(s->top=maxsize-1)
    {
    printf("overflow");
        return NULL; //return;(不能return NULL)
    }
    s->top++;
    s->data[s->top]=x;
}

int POP(seqstack * s)
{
    if(s->top==-1)
    {   
        printf("underflow");
    return NULL;
    }
   
    return(s->data[s->top]);  //这里你都return了,下面那句怎么执行???
    s->top--;
   
}

void print()
{
    seqstack * s; //你这里只是申明了一个指针,没有给它分配内存,seqstack *s=(seqstack*)malloc(sizeof(seqtack));
    int x;
    INITSTACK(s);
    printf("请输入数字:");
    scanf("%d",&x);
    while(x!=-1)
    {
        PUSH(s,x);
        scanf("%d",&x);
    }
    while(s->top!=-1)
    {
        x=POP(s);
        printf("%d",x);
    }
}
2012-03-16 19:03
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:2 
typedef struct
{
    datatype data[maxsize];
    int top;
    int stacksize;
}seqstack;
这样定义栈 那么栈顶指针和栈底指针在那里啊
如果初始分配的栈空间满了 又怎么追加空间呢。

梅尚程荀
马谭杨奚







                                                       
2012-03-16 19:23
jackienupt
Rank: 1
等 级:新手上路
帖 子:29
专家分:9
注 册:2011-9-24
收藏
得分:0 
谢谢了,问题都解决了
2012-03-16 19:32
jackienupt
Rank: 1
等 级:新手上路
帖 子:29
专家分:9
注 册:2011-9-24
收藏
得分:0 
回复 3楼 有容就大
这个是不太合理,用节点的方式更好,但是初学弄着玩的
2012-03-16 19:33
心灵百合
Rank: 5Rank: 5
等 级:职业侠客
帖 子:215
专家分:367
注 册:2011-3-30
收藏
得分:0 
#include "stdio.h"
#define maxsize 100
typedef char datatype;
typedef struct
{
    datatype data[maxsize];
    int top;
    int stacksize;
}seqstack;


void INITSTACK(seqstack * s)
{
    s->top=-1;
    s->stacksize=maxsize;
}

void PUSH(seqstack * s,int x)
{
    if(s->top==maxsize-1)//少等号
    {
    printf("overflow");
        return NULL;
    }
    s->top++;
    s->data[s->top]=x;
}

int POP(seqstack * s)
{
    if(s->top==-1)
    {   
        printf("underflow");
    return NULL;
    }
   
    return(s->data[s->top]);
    s->top--;
   
}

void print()
{
    seqstack * s;
    int x;
    INITSTACK(s);
    printf("请输入数字:");
    scanf("%d",&x);
    while(x!=-1)
    {
        PUSH(s,x);
        scanf("%d",&x);
    }
    while(s->top!=-1)
    {
        x=POP(s);
        printf("%d",x);
    }
}

void main()
{
    print();
}
2012-03-16 19:45
快速回复:一个关于栈的小问题,麻烦各位大大了
数据加载中...
 
   



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

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