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

告别迷茫

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

 
 
 

日志

 
 

《stack的基本操作》  

2014-10-01 17:09:37|  分类: 数据结构---严老 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

struct SqStack
{
int *base;
int *top;
int length;
};
const int Max=100;

bool InitStack(SqStack &l)
{
l.base=(int *)malloc(Max*sizeof(SqStack));
if(l.base==NULL)
return false;
l.top=l.base;
l.length=Max;
return true;
}

bool DestroyStack(SqStack &l)
{
free(l.base);
l.base=l.top=NULL;
l.length=0;
return true;
}

bool ClearStack(SqStack &L)
{
L.base=L.top;
return true;
}
bool IsEmpty(SqStack &l)
{
if(l.base==l.top)
{
return true;
}
return false;
}

int StackLength(SqStack &l)
{
return l.top-l.base;
}

bool GetTop(SqStack &l,int &e)
{
if(IsEmpty(l))
{
return false;
}

e= *(l.top-1);
return true;
}

bool Pop(SqStack &l,int &e)
{
if(IsEmpty(l))
{
return false;
}
e=*(--l.top);
return true;
}

bool Push(SqStack &l,int e)
{
//1.判断我们的存诸的空间是否足够;
if(l.top-l.base>=l.length)
{
int *s=(int *)realloc(l.base,(10+Max)*sizeof(SqStack));//增加的我们的空间瑟,注意我们的这个函数的使用;
l.length+=10;
l.base=s;
}
*(l.top)++=e;//top 的下一位保存我们的结果;
return true;
}

bool StackTraverse(SqStack &l)
{
if(l.base==l.top)
{
return false;
}
while(l.top>l.base)//注意我们的这个判断的写法!
{
cout<<*l.base<<" ";

}
cout<<endl;
}

应用之一   垮号的匹配

void check()
{ // 对于输入的任意一个字符串,检验括号是否配对
SqStack s;
SElemType ch[80],*p,e;
if(InitStack(s)) // 初始化栈成功
{
printf("请输入表达式\n");
gets(ch);
p=ch;
while(*p) // 没到串尾
switch(*p)
{
case '(':
case '[':Push(s,*p++);
break; // 左括号入栈,且p++
case ')':
case ']':if(!StackEmpty(s)) // 栈不空
{
Pop(s,e); // 弹出栈顶元素
if(*p==')'&&e!='('||*p==']'&&e!='[') // 弹出的栈顶元素与*p不配对
{
printf("左右括号不配对\n");
exit(ERROR);
}
else
{
p++;
break; // 跳出switch语句
}
}
else // 栈空
{
printf("缺乏左括号\n");
exit(ERROR);
}
default: p++; // 其它字符不处理,指针向后移
}
if(StackEmpty(s)) // 字符串结束时栈空
printf("括号匹配\n");
else
printf("缺乏右括号\n");
}
}

int main()
{
check();
}



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

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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