| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8013 人关注过本帖
标题:进栈与出栈??
只看楼主 加入收藏
ljb851331689
Rank: 2
等 级:论坛游民
帖 子:25
专家分:39
注 册:2009-8-28
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
进栈与出栈??
如果进栈是1,2,3,4,5,6
那出栈呢怎么出栈啊?
  是怎么一回事啊?
2009-11-17 16:05
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:5 
那不是6,5,4,3,2,1,栈先进后出。这是栈的特性。

离恨恰如春草,更行更远还生。
2009-11-17 17:40
wufei1989121
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:39
专家分:113
注 册:2009-11-13
收藏
得分:5 
栈之所以称为栈 就是因为它是先进的后出 后进的先出特点 否则它就是线性表了
2009-11-18 21:45
燧惢潇遥
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2009-11-19
收藏
得分:5 
4个字,先进后出
2009-11-19 14:57
佳嘉
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:534
专家分:1383
注 册:2009-11-8
收藏
得分:5 
我写了一个关于栈的程序
你试试就知道了
#include<stdio.h>
#include<stdlib.h>
#define MAX  20
typedef struct {
int stack[MAX];
int top;
}sqstack;
void Initstack(sqstack *p)   /*初始化*/
{
if(!p)
printf("error");
p->top=-1;\
}
void Push(sqstack *p,int x)
{
if(p->top<MAX-1)
{
p->top=p->top+1;
p->stack[p->top]=x;
}
else printf("overflow!\n");
}
int Pop(sqstack *p)
{
int x;
if(p->top!=0)
{
 x=p->stack[p->top];
 printf("以前的栈顶元素%d已经被删除 !\n",x);
 p->top=p->top-1;
 return x;
 }
  else
  {
  printf("underflow!\n");
  return 0;
  }
  }
  int Gettop(sqstack *p)
  {
  int x;
  if(p->top!=0)
  {
  x=p->stack[p->top];
  return x;
  }
  else
  {
  printf("underflow\n");
  return 0;
  }
  }
  void Outstack(sqstack *p)
  {
  int i;
  printf("\n");
  if(p->top<0)
  {
  printf("这是一个空栈 !");
  printf("\n");
    }
    else
    for(i=p->top;i>=0;i--)
       printf("第 %d 个数据元素是: %d\n",i,p->stack[i]);

    }
    void Setempty(sqstack *p)
    {
    p->top=-1;
    }
    main()
    {
    sqstack *q;
    int y,cord;
    int a;
    do{
    printf("\n");
    printf("第一次使用必须初始化 !\n");
    printf("\n");
    printf("\n            主菜单                \n");
    printf("\n      1    初始化顺序栈           \n");
    printf("\n      2    插入一个元素           \n");
    printf("\n      3    删除栈顶元素           \n");
    printf("\n      4    取栈顶元素             \n");
    printf("\n      5    置空顺序栈             \n");
    printf("\n      6    结束程序运行           \n");
    printf("\n----------------------------------\n");
    printf("请输入您的选择 (1,2,3,4,5,6)");
    scanf("%d",&cord);
    printf("\n");
    switch(cord)
    {
    case 1:
    {
    q=(sqstack *)malloc(sizeof(sqstack));
    Initstack(q);
    Outstack(q);
    }break;
    case 2:
   { printf("请输入要插入的数据元素 :a=");
    scanf("%d",&a);
    Push(q,a);
    Outstack(q);
    }break;
    case 3:
    {
    Pop(q);
    Outstack(q);
    }
    break;
    case 4:
    {
    y=Gettop(q);
    printf("\n 栈顶元素为 : %d",y);
    Outstack(q);
    }break;
    case 5:
    {
    Setempty(q);
    printf("\n顺序栈被置空! \n");
    Outstack(q);
    }break;
    case 6:
    exit(0);
    }
    }while(cord<=6);
    }
2009-11-19 18:13
lian28564290
Rank: 2
等 级:论坛游民
帖 子:13
专家分:34
注 册:2009-11-10
收藏
得分:0 
后进先出,就像呕吐,后吃的先吐出来,队就像拉大便,先吃的先出来
2009-11-22 20:35
xiaoqing8731
Rank: 2
等 级:论坛游民
帖 子:23
专家分:32
注 册:2009-10-9
收藏
得分:0 
哈哈  其实你可以想想函数调用的原理  就明白栈的原理了    很简单的
2009-11-23 15:40
ljy0662
Rank: 2
等 级:论坛游民
帖 子:27
专家分:15
注 册:2009-3-2
收藏
得分:0 
我就不明白了!
我可以理解它(一段程序,一段代码)的思路,但是为什么就是不懂得自己写呢,我的C语言学得还可以啦,过了几个级的C,但是数据结构的题,我就不懂得把我的思路写下来,即使写下来了也是有错的呢?
难道语法的错,那位高人能够写个数据结构的语法给我看看,尤其是栈的,怎么进栈,怎么出栈!
2009-11-24 20:28
tifeng
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-12-2
收藏
得分:0 
出栈顺序不一定啊
例如比如先进1 出栈1 再进2,3 再出3,进4,5 再出 5,4,2
顺序就是1,3,5,4,2
2009-12-02 22:17
dhchk
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-3-30
收藏
得分:0 
回复 6楼 lian28564290
解释得倒是蛮清楚的,就是恶心了点
2010-03-30 08:51
快速回复:进栈与出栈??
数据加载中...
 
   



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

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