| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1418 人关注过本帖
标题:栈的问题,可以连续压入字符串再一起弹出吗?
只看楼主 加入收藏
apigboy
Rank: 1
等 级:新手上路
帖 子:35
专家分:4
注 册:2011-10-3
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:4 
栈的问题,可以连续压入字符串再一起弹出吗?
程序代码:
#include"stdlib.h"
#include"iostream.h"
#include"conio.h"

typedef char elemtype;          //类型
#define stacksize 100           //顺序栈原始分配空间
typedef struct
{
    elemtype data[stacksize];   //保存栈中元素
    int top;                    //栈指针
}sqstack;

void initstack(sqstack*st)      //st为应用型参数
{
    st->top=-1;                 //表示栈中为空
}

int push(sqstack*st,elemtype x)
{
    if(st->top==stacksize-1)    //是否栈满
        return 0;
    else
    {
        st->top++;             //修改栈顶指针
        st->data[st->top]=x;   //指针指向存储单元
        return 1;
    }
}

int pop(sqstack*st,elemtype*x)
{
    if(st->top==-1)
        return 0;
    else
    {
        *x=st->data[st->top];    //取栈顶元素
        st->top=st->top-1;               //修改指针    
        return 1;
    }
}

int gettop(sqstack*st,elemtype*x)
{
    if(st->top==-1)
        return 0;
    else
    {
        *x=st->data[st->top];
        return 1;
    }
}

int stackempty(sqstack*st)
{
    if(st->top==-1)    
        return 1;
    else
        return 0;
}

void main()
{
    int i,n;
    sqstack st;
    elemtype m,a[100];
    initstack(&st);
    cout<<"请输入元素个数"<<endl;
    cin>>n;    
    cout<<"请输入元素"<<endl;
    cin>>m;
    push(&st,m);
    pop(&st,&a[0]);
    for(i=1;i<=n-1;i++)
    {
        cin>>m;
        push(&st,m);
    }
    
    
    cout<<"出栈次序:";
    for(i=0;i<=n-1;i++)
    {
        pop(&st,&a[i+1]);
        cout<<a[i];
    }
    cout<<endl;
}



栈可以连续压入字符串再一起弹出吗?
比如说 我输入要输入元素3个,压入 ab bc cd,可以把ab或bc或者cd压入同一个再一起输出吗?
上面的代码输入ab bc cd 的话弹出的是abb。。怎么输出ab cd bc呢?
搜索更多相关主题的帖子: 字符串 
2011-10-12 20:36
ileelsai
Rank: 5Rank: 5
等 级:职业侠客
帖 子:87
专家分:303
注 册:2011-9-25
收藏
得分:10 
每个栈元素用word类型不就行了,不过你想要的是队列ba

[ 本帖最后由 ileelsai 于 2011-10-12 20:43 编辑 ]
2011-10-12 20:42
apigboy
Rank: 1
等 级:新手上路
帖 子:35
专家分:4
注 册:2011-10-3
收藏
得分:0 
回复 2楼 ileelsai
用WORD 可以输出连续的整形的数了,但是输入的是字母的话就输出全是0了啊。。求解啊
2011-10-12 21:04
apigboy
Rank: 1
等 级:新手上路
帖 子:35
专家分:4
注 册:2011-10-3
收藏
得分:0 
我是要的是输入几个字符串,输出的也是那几个字符串,但我的代码是输出的只有我输入的前N个字符,不能成整串输出。。例如:输入4 个 ,ab bc cd de 要输出:ab de cd bc 可我的代码输出的是acbb就是输入的前四个字符(先第一个进栈出栈,再后面的全进再出栈),刚刚把char改成了WORD可以输整数串了,字符串还是不行。
2011-10-12 22:50
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
成串输出和逐个输出不会影响你的处理结果呀。你要明白:计算机的处理是以字节为基本单元的,即使你写出的代码是成串输入输出,计算机执行时实际上也是逐个搬运,反过来,也是如此。你的设计思想,应该是得到逐个基本单元之后自己按需要拼凑在一起形成所需的成串(表面上以为成串而已)。回忆一下字符串,你觉得那是成串的,但计算机看只是由单个字符排列组合而成的数组,在它眼里,没有“成串”的概念,同样,在你的设计思想中,也不需要被“成串”束缚住。

授人以渔,不授人以鱼。
2011-10-13 00:30
快速回复:栈的问题,可以连续压入字符串再一起弹出吗?
数据加载中...
 
   



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

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