栈和队列的原理以及应用场景

      栈和队列是一个比较抽象的概念,大多数人知道栈和队列的特点,但是实际不知道怎么用,这是大家学习阶段的通病。

      要想用栈和队列,首先要明确,他们是什么。

1.是什么?

    栈和队列其实是一个工具,他们传统的工具方法 工具类不同,他们是“思想”工具,大家都知道,栈是后进先出,队列是先进先出。但是实际怎么用却不知道。

2.怎么用?

    栈和队列是很好的工具,他们的应用我们平时开发可能用到得少,但是在实际中,他们的应用非常多。

    栈:栈先进先出的特点,可以很好的控制访问控制,栈的数据访问是有很严格的,只能访问最后加入的数据,这对数据访问控制严格的应用很有好处。现实中,字符串倒序输出,使用栈的原理就可以很好的实现。示例代码:

public String goReverse(String inputStr){
int size = inputStr.length();
StackS stackS = new StackS(size);
int i = 0;
while(!stackS.isFull()){
stackS.push(inputStr.charAt(i));
i++;
}
StringBuffer stringBuffer = new StringBuffer();
while(!stackS.isEmpty()){
stringBuffer.append(stackS.pop());
}
outputStr = stringBuffer.toString();
return outputStr;

}

除此之外,我们熟悉的编译器变异机制中也有栈的原理,例如特殊标点符号匹配,例如“{”、“}”、“(”、“)”等成对的符号。

队列:队列可以模拟很多现实的生产环境,例如排队,队列是先进先出,不允许有任何元素插队,这对于解决现实生产问题有很大帮助。

优点:栈和队列的操作的时间复杂度都是O(1),效率非常高。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值