栈的应用

后进先出

【理解】每次可以把一本书放在箱子的最上方,也可以把箱子最上方的书拿出

栈顶指针是始终指向栈的最上方元素的一个标记,

当使用数组实现栈时,则是一个int*型的指针

(数组下标从0开始),通常记为top

而当使用链表实现栈时,则是一个int*型的指针

栈中没有元素(即栈空)时令top为-1

下面是常规操作

①清空(clear)

栈的清空操作将栈顶指针top置为-1,表示栈中没有元素

void clear(){

top=-1

}

②获取栈内元素个数size

由于栈顶指针top始终指向栈顶元素,而数组下标从0开始,因此栈内元素的数为top+1

int size(){

return top+1;

}

③判空(empty)

由栈顶指针top的定义可知,仅当top=-1时为栈空,返回true

否则,返回false

bool empty()
{
    if(top==-1)
        return true;
    else
        return false;
}

④进栈(push)

push(x)操作将元素x置为栈顶,由于栈顶指针top指向栈顶元素

因此需要先把top+1,然后再把x存入top指向的位置

void push()
{
    st[++top]=x;
}

⑤出栈(pop)

pop()操作将栈顶元素出栈,可事实上可以直接将栈顶指针top-1来实现这个效果

void pop()

{top--;}

⑥取栈顶元素

由于栈顶元素top始终指向栈顶元素,因此可以st[top]即为栈顶元素

int top()

{return st[top];}

需要特别注意的是,出栈操作和取栈顶操作必须在栈非空的情况下才能使用

因此在使用pop()函数和top函数之前必须要使用empty()函数判断栈是否为空

同时,可以使用STL中的stack容器来非常容易地使用栈

【注意】

STL中没有实现栈的清空,所以如果需要实现栈的清空

可以用一个while循环反复pop出元素直到栈空

while(!st.empty)

{st.pop();}

事实上,更常用的方法是重新定义一个栈以变相实现栈的清空

 

知识点来自于《算法笔记》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值