栈的应用

1.栈的定义
struct Stack{
T* data; // 数据元素存储空间的开始地址
int top; // 栈顶元素所处数组位置
int max; // 栈存储空间最多可存储的数据元素个数
};
typedef int T; // 数据元素的数据类型

2.入栈和出栈的操作
Stack_Push(stk,e)//入栈
e=Stack_Pop(stk)//出栈

3.利用栈实现整数的十进制转八进制
利用stack栈实现整数的十进制转八进制,输入参数:十进制整数 e, 打印e的八进制结果,末尾换行
//算法:十进制转八进制就是十位数除8的余数后得先出,符合栈的先进后出的特点,先给栈分配空间,然后用Stack_Push(stk,e%8),最后e=Stack_Pop(stk)

void Decimal_Conversion_Octal(T e)
{Stack* stk=Stack_Create(32);
while(e!=0)
{Stack_Push(stk,e%8);
e=e/8;}
if(!Stack_IsEmpty(stk))
{
e=Stack_Pop(stk);
printf("%d",e);}
printf("\n");
}

4.利用栈判断字符串括号是否匹配
利用stack栈判断括号是否匹配,输入参数:字符串序列,字符串长度,若匹配输出YES,否则输出NO,末尾换行
//算法:用一个while循环和一个switch语句使字符串若是左括号进栈,先确保左括号全部进栈,若是右括号,则用If语句判断是否对应的左括号与出栈的第一个括号相等,若相等,则出栈赋值,循环结束,栈空则输出YES

void Bracket_Match(T* str, int len)
{Stack* stk=Stack_Create(100);
int i=0;
char ch=str[i];
while(str[i]!='\0')
{switch(str[i])
{case'(':case'{':case'[':
Stack_Push(stk,str[i]);break;
case')':if('('==stk->data[stk->top])ch=Stack_Pop(stk);break;
case'}':if('{'==stk->data[stk->top])ch=Stack_Pop(stk);break;
case']':if('['==stk->data[stk->top])ch=Stack_Pop(stk);break;
}
i++;
}
if(Stack_IsEmpty(stk))
{printf("YES");printf("\n");}
else{printf("NO");printf("\n");}
}

5.利用栈判断字符串是否为回文串
利用stack栈判断字符串是否为回文串, 输入参数:字符串序列,字符串长度,若是回文串输出YES,否则输出NO,末尾换行
//算法:用while循环将字符串元素压入栈中,再用while循环和if语句判断出栈的元素(相当于字符串的逆序)是否与字符串的顺序的元素相同,循环结束若栈为空则YES

void Palindrome(T* str, int len)
{
Stack* stk=Stack_Create(300);
int i=0;j=0;
char ch;
while(str[i]!='\0')
{
Stack_Push(stk,str[i]);
i++;
}
while(str[j]='\0')
{if(stk->data[stk->top]==str[j])
{ch=Stack_Pop(stk);j++;}
else break;
}
if(Stack_IsEmpty(stk))
{printf("YES");printf("\n");
}
else {printf("NO");printf("\n");}
}
5.若已知一个栈的入栈顺序是A、B、C、D,其出栈序列为P1、P2、P3、P4,则P2、P4不可能是(D,C)
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
LIN协议是一种用于低成本、低速率串行网络的通信协议,主要应用于车辆电子系统中。以下是关于LIN协议应用的一些分享。 首先,LIN协议在车辆电子系统中常用于连接各种低速率从设备,如门控制单元、窗户控制单元、座椅控制单元等。通过LIN总线,这些从设备可以与车辆主控制单元进行通信和控制。相比于其他高速率通信协议,如CAN协议,LIN协议更适用于这些低速率从设备的通信需求。 其次,LIN协议具有较低的成本优势。由于LIN协议使用的是普通的串行通信线路,不需要专用的硬件设备支持,因此整体成本相对较低。这使得LIN协议在汽车电子系统中得到广泛的应用,特别是在非关键性应用中。 此外,LIN协议还具有较低的功耗。由于LIN协议使用的是低速率通信,通信过程中的能耗相对较低。这在需要长时间运行的系统中尤为重要,例如关闭引擎后仍需要继续运行的车辆电子系统。 最后,LIN协议还支持多主从架构。这意味着在LIN总线上可以连接多个主设备和从设备,实现复杂的通信和控制功能。这种灵活性使得LIN协议在车辆电子系统中能够满足不同设备之间的通信需求。 总之,LIN协议在车辆电子系统中应用广泛,并且具有成本低、功耗低和多主从支持等优势。随着车辆电子化的发展,LIN协议在汽车行业中的应用前景将会更加广阔。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尾迹双冒号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值