注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

告别迷茫

梦想与现实的差距,就是我们生活的意义。因为我们有差距,我们才会一直积累,在努力。

 
 
 

日志

 
 

4-2顺序双向栈  

2014-04-09 16:31:09|  分类: 陈明数据结构代码 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

#include<stdio.h>//为了合理的使用我们的空间

#define max 64
typedef struct
{
int data[max];
int top1,top2;
}dstack;
//(1) 初始化的操作
void Initstack(dstack *S)
{
S->top1=0;
S->top2=max-1;
}
//(2) 进栈的操作
//把数据x压入栈的左栈或者右栈;
bool PushDstack( dstack *s,char ch,int x)//ch 为左右进栈的依据之一;
{
if((s->top2)-(s->top1)==1)
return 0;//这个判断得好精妙;
if(ch=='s1')
{
s->data[s->top1]=x;//这个和那个单项的差不多啊!
s->top1=s->top1+1;
return 1;
}
if(ch=='s2')
{
s->data[s->top2]=x;
s->top2=s->top2-1;
return 1;
}
}
//(3) 出栈的操作
int Popstack(dstack *s,char ch)
{//从栈的S1 或 S2 取出栈顶的元素并返还会其值
if(ch=='s1')
{
if(s->top1==0)
return NULL;
else
{
s->top1=s->top1-1;
return s->data[s->top1];

}
}
if(ch=='s2')
{
if(s->top2>max-1)
return NULL;
else
{
s->top2=s->top2+1;//这里为什么是加号而,那里为什么又是减号?
return s->data[s->top2];
}
}

}


  评论这张
 
阅读(0)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017