| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 442 人关注过本帖
标题:关于栈的!问题出哪里!
只看楼主 加入收藏
jinxilee
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2008-4-6
收藏
 问题点数:0 回复次数:4 
关于栈的!问题出哪里!
#include<stdio.h>
#define maxsize 20
int Num_del;
struct stack
{int a[maxsize];
 int top[3];
};

void initstack(struct stack s)
{s.top[1]=-1;
 s.top[2]=maxsize;
}

int push(struct stack s,int x,int k)
{if(s.top[1]==s.top[2])
   {printf("\nstack is full!\n");
    return 0;
   }
 else {if(k==1)
  {s.a[s.top[1]]=x;
   s.top[1]++;
  }
       else s.a[s.top[2]]=x;
    s.top[2]--;
      }
  return 1;
}

int pop(struct stack s,int k)
{if(k==1)
   {if(s.top[1]!=-1)
      {Num_del=s.a[s.top[1]--];
       return 1;
      }
    else printf("stack_1 can't be poped!\n");
      return 0;
   }
 else  {if(s.top[2]!=maxsize)
         {Num_del=s.a[s.top[2]];
          s.top[2]++;
          return 1;
         }
        else printf("STACK_2 can't be poped!\n");
            return 0;
       }
}

void print(struct stack s)
{int i;
if(pop(s,1)==1)
  {printf("The nums of stack_1 are:\n");
   for(i=0;i<s.top[1];i++)
   printf("%d",s.a[s.top[1]]);
   s.top[1]++;
  }
else printf("stack_1 is empty!\n");
if(pop(s,2)==1)
 {printf("the nums of stack_2 are:\n");
  for(i=s.top[2];i>0;i--)
  printf("%d",s.a[s.top[2]]);
  s.top[2]--;
 }
else printf("stack_2 is empty!\n");
}

void main()
{struct stack s;
int x,k,i;
initstack(s);
printf("input which stack the nums will be pushed:");
scanf("%d",&k);
printf("input 8 nums into stack_%d:\n",k);
for(i=0;i<8;i++)
 {if(k==1)
  {scanf("%d",&s.a[i]);
   s.top[1]++;
  }
else {if(k==2)
      scanf("%d",&s.a[maxsize-1-i]);
      s.top[2]--;
     }
 }
print(s);
printf("input which stack the num will be pushed:");
scanf("%d",&k);
printf("input the num  to be pushed into stack_%d:\n",k);
scanf("%d",&x);
push(s,x,k);
print(s);
printf("input which stack the nums will be poped:");
scanf("%d",&k);
printf("input the num  to be poped out of stack_%d:\n",k);
print(s);
printf("%d",Num_del);
}
搜索更多相关主题的帖子: include return 
2008-04-14 13:26
jinxilee
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2008-4-6
收藏
得分:0 
运行后 ,得到是 整屏幕的数字
2008-04-14 13:27
闪闪4521
Rank: 1
等 级:新手上路
帖 子:196
专家分:0
注 册:2007-11-30
收藏
得分:0 
我这里一输入就出错
那个s.top[1]= -1
下面那个push函数里你直接用了
else {if(k==1)
  {s.a[s.top[1]]=x;
   s.top[1]++;
  }
顺便问一下那个print(s)有什么用的?
2008-04-14 13:41
jinxilee
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2008-4-6
收藏
得分:0 
print 输出栈 push 进栈 pop 出栈 initstack 对栈 初始化
push函数里直接用了
else {if(k==1)
  {s.a[s.top[1]]=x;
   s.top[1]++;
  }
会有什么结果呢

[[it] 本帖最后由 jinxilee 于 2008-4-14 14:08 编辑 [/it]]
2008-04-14 14:02
闪闪4521
Rank: 1
等 级:新手上路
帖 子:196
专家分:0
注 册:2007-11-30
收藏
得分:0 
s.top[1]=-1;
s.a[-1]=x;
程序崩溃了
2008-04-14 14:22
快速回复:关于栈的!问题出哪里!
数据加载中...
 
   



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

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