数据结构第三章:栈和队列

一、栈的定义和运算

1.栈的定义

栈是一种特殊的线性表,插入或删除栈元素的运算只能在表的一端进行,称运算的一端为栈顶,另一端称为栈底。
特点:后进先出
栈又称为“后进先出”的线性表,简称LIFO表。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、栈的应用举例

1.数制转换

在这里插入图片描述

void conversion(  ) {
   
        initstack(S);
        scanf (%,N);
        while(N){
   
             push(S,N%8)
             N=N/8;
         }
         while(! Stackempty(S)){
   
            pop(S,e);
            printf(%d”,e);
          }
}

2.括号匹配的检验

假设表达式中允许包含两种括号:圆括号和方括号,其嵌套顺序随意,例:
( [ ] ( ) )或[ ( [ ] [ ] ) ]等为正确的格式
[( ])或([( ))或(( )])均为不正确的格式。

检验括号是否匹配的方法可用“期待的急迫程度”这个概念来描述。

在这里插入图片描述

bool matching(char exp[],  int  n) {
   
	int i = 0;   
	mat = true;  
	InitStack(S);
  	while ( i<n && mat ) {
   
    	     switch of exp[i] {
   
        		case 左括弧:{
    Push(S,exp[i]);  i++;  break; }
        		case): {
   
            		if ( !StackEmpty(S) && GetTop(S) ==()
             		      {
     Pop(S, e);  i++;  }
            	            else {
   mat = false;}
            		      break;  } //case ')'
      	      … …
</
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值