| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 336 人关注过本帖
标题:新手求助!顺序栈的一些问题!
取消只看楼主 加入收藏
a597910538
Rank: 1
等 级:新手上路
帖 子:20
专家分:3
注 册:2011-5-21
结帖率:100%
收藏
 问题点数:0 回复次数:1 
新手求助!顺序栈的一些问题!
这个程序出的问题是,输入一个元素的话,输出没有问题,但是如果输入2个或2个以上的元素话就会出现问题!各位帮忙看看
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define maxsize 100
typedef struct node
{
    int top;
    char data[maxsize];
}depositort;

//typedef struct node depositort;//depositor仓库

void initstack(depositort *s)
{
    s->top=-1;
    printf("仓库已清空!\n");
}

int empty(depositort *s)
{
    if(s->top==0)
        return 1;
    else
        return 0;
}

char push(depositort *s,char x)//入栈
{
    if(s->top==maxsize-1)
    {
        printf("仓库已满\n");
        return 0;
    }
    else
    {
        
        s->top++;
        (s->data)[s->top]=x;
        printf("插入成功!\n");
        return 1;
    }
}

char pop(depositort *s)//出栈
{
    char x;
    if(!empty(s))
    {
        printf("仓库中没有产品!\n");
        x=NULL;
    }
    else
        {
            x=(s->data)[s->top];
            s->top--;
            printf("输出成功!\n");
        }
    return x;
}
void main()
{
    depositort s;
    int i,k=0;
    char ch;
    initstack(&s);
    while((ch=getchar())!='\n')
    {        
        push(&s,ch);
        k++;
    }
    for(i=0;i<k;i++)
    {
        printf("%c",pop(&s));
    }   
        printf("\n");
}

输出结果:
1.输入元素======>>a
仓库已清空!
a
插入成功!
输出成功!
a
Press any key to continue
2.输入元素======>>as
仓库已清空!
as
插入成功!
输出成功!
仓库中没有产品!
仓库中没有产品!
Press any key to continue
搜索更多相关主题的帖子: return 
2011-06-13 20:28
a597910538
Rank: 1
等 级:新手上路
帖 子:20
专家分:3
注 册:2011-5-21
收藏
得分:0 
最终修正版
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define maxsize 100
typedef struct node
{
    int top;
    char data[maxsize];
}depositort;

//typedef struct node depositort;//depositor仓库

void initstack(depositort *s)
{
    s->top=0;
    printf("仓库已清空!\n");
}

int empty(depositort *s)
{
    if(s->top==0)
        return 1;
    else        
        return 0;
}

char push(depositort *s,char x)//入栈
{
    if(s->top==maxsize-1)
    {
        printf("仓库已满\n");
        return 0;
    }
    else
    {        
        s->top++;   
        (s->data)[s->top]=x;
        return 1;
    }
}

char pop(depositort *s)//出栈
{
    char x;
    if(empty(s))
    {
        printf("仓库中没有产品!\n");
        x=NULL;
    }
    else
        {
            x=(s->data)[s->top];
            s->top--;
        }
    return x;
}
void main()
{
    depositort s;
    int i,k=0;
    char ch;
    initstack(&s);
    while((ch=getchar())!='\n')
    {        
        push(&s,ch);
        k++;
    }
    for(i=0;i<k;i++)
    {
        printf("%c",pop(&s));
    }   
        printf("\n");
}
2011-06-14 11:30
快速回复:新手求助!顺序栈的一些问题!
数据加载中...
 
   



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

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