CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

帮帮忙,一道出栈入栈的问题.

楼主lee0119(tim)2003-12-01 22:35:20 在 C/C++ / C语言 提问

设以整数序列a1,a2,a3,a4作为栈S的输入,利用push,pop操作,编程实现算法。  
  请各位给点提示。 问题点数:0、回复次数:13Top

1 楼bryan99(我想我是海)回复于 2003-12-01 22:47:13 得分 0

随便一本数据结构的书上就有啊!  
  可以设S为一个数组,a1,a2,a3,a4依次进栈,出栈只能从数组的尾端出,就可以了!Top

2 楼lyff8neo(对不起,我对你忠诚,因为你是c++)回复于 2003-12-01 23:57:03 得分 0

应该有多做情况哦!楼上的写的太简单了啊!Top

3 楼Sodier(逍遥神剑)回复于 2003-12-02 00:53:32 得分 0

数据结构书上不都有吗?Top

4 楼skywarship(很菜的小李)回复于 2003-12-02 00:58:34 得分 0

照着数据结构上打Top

5 楼rotation(很明顯)回复于 2003-12-02 10:14:13 得分 0

最簡單的,用數組實現.  
   
  template   <class   T>   class   stack  
  {  
      T   array[MAX_SIZE];  
      unsigned   int   top;  
    public:  
      //.......  
      void   push(T   const&   item)  
        {  
            if(top   ==   MAX_SIZE)   throw   domain_error();  
              array[top++]   =   item;  
        }  
        T   pop()  
        {  
            if(top   ==   0)   throw   domain_error();  
            return   array[--top];  
        }  
  };  
   
  Top

6 楼fuxf(布衣)回复于 2003-12-02 10:46:03 得分 0

用数组实现只能实现定长度的栈.  
  用链表实现可以达到变长的栈.Top

7 楼njuhuangmy(茶)回复于 2003-12-02 11:25:15 得分 0

数组也可以realloc啊!  
  呵呵  
   
  push()  
        检查数组的元素个数,如果已经满了,重新申请更大的内存区域  
        往数组里插入这个值,并给元素个数加1  
                 
  pop()  
          检查数组元素个数,是否为0,如果是,返回error  
          如果数组元素个数为n,则把array[n-1]释放掉,元素个数减1  
   
  Top

8 楼dllwei(鱼哭了)回复于 2003-12-02 11:41:53 得分 0

//----------user   struct  
  typedef   struct{  
  int   age;  
  }SElemType;    
   
  #define   STACK_INIT_SIZE   100;  
  #define   STACKINCREMNET   10;  
  //----------stack   struct  
  typedef   struct{  
  SElemType   *base;  
  SElemType   *top;  
  int   stacksize;  
  }SqStack;  
   
   
  //-------构造一个空栈  
  Status   InitStack(SqStack   &S){  
  S.base=(SElemType   *)malloc(STACK_INIT_SIZE   *   sizeof(SElemType));  
  if   (!S.base)  
  return   OVERFLOW;  
  S.top=S.base;  
  S.stacksize   =STACK_INIT_SIZE return   OK;  
  }  
   
  //-------取栈顶元素  
  Status   GetTop(SqStack   S,SElemType   &e){  
  if   (S.top   ==S.base   )   return   ERROR;  
  e=*(S.top   -1);  
  return   OK;  
  }  
   
  //-------将元素压入栈  
  Status   Push(SqStack   &S,SElemType   e){  
  //--------空间不够的情况  
  if   (S.top   -S.base>S.stacksize){  
  S.base   =(SElemType*)realloc(S.base   ,(S.stacksize   +10*sizeof(SElemType)));  
  if   (!S.base)   exit(OVERFLOW);  
  S.top   =S.base   +S.stacksize;  
  S.stacksize   +=10;  
  }  
  //--------正常情况下  
  *S.top   ++=e;  
  return   OK;  
  }  
   
  //------------将元素弹出栈  
  Status   Pop(SqStack   &S,SElemType   &e){  
  if   (S.top   ==S.base)   return   ERROR;  
  e=*   --S.top   ;  
  return   OK;  
  }Top

9 楼lee0119(tim)回复于 2003-12-03 22:15:05 得分 0

不好意思,题打错了!  
  设以整数序列a1,a2,a3,a4作为栈S的输入,利用push,pop操作,求出所有的出栈序列。写出算法。Top

10 楼lee0119(tim)回复于 2003-12-03 22:17:23 得分 0

请斑竹不要结贴,本人急须!Top

11 楼abitz(阿奈)(老婆永远是对的!)回复于 2003-12-03 22:35:57 得分 0

早就猜到是这个意思了Top

12 楼dllwei(鱼哭了)回复于 2003-12-04 10:17:12 得分 0

http://search.csdn.net/expert/topic/50/5001/2000/11/6/38455.htmTop

13 楼19830711(为你守候)回复于 2003-12-04 10:27:31 得分 0

axaxaxaxaxTop

相关问题

  • 简单问题,关于出入栈的
  • asm中什么情况下必须把寄存器的值压入栈?
  • 栈的完整实现,包括:构造、入栈、出栈、清空和销毁,大家看看有什么错误?
  • 请教函数参数压栈顺序问题,fun(a,b)中a和b谁先入栈?
  • 以下是给一个结构负值的代码, 请问把wc.hinstance入栈有什么作用。谢谢
  • 假设某指令触发了一个中断,CS:IP入栈,转入中断处理程序,这个CS:IP是本指令还是下一条指令呢?
  • 英雄们,救救我吧!到底程序执行的时候,每个函数消息什么的都是入栈出栈的吗,给我用于准备的这段例子郁闷死我了。
  • 一道关于栈的问题
  • 请教一道关于栈的证明题
  • 一道难题

关键词

  • top
  • 数组
  • selemtype
  • 元素个数
  • sqstack
  • stacksize
  • 序列
  • stack
  • 实现
  • pop

得分解答快速导航

  • 帖主:lee0119

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo