这篇blog试图说明这么一个问题,当一个c函数被调用时,一个栈帧(stack frame)是如何被建立,又如何被消除的。这些细节跟操作系统平台及编译器的实现有关,下面的描述是针对运行在Linux的gcc编译器而言的。c语言的标准并没有描述实现的方式。所以,不同的编译器、不同的操作系统都可能有自己的建...
分类:
其他好文 时间:
2015-04-13 22:36:03
阅读次数:
146
数组实现双端队列的时候注意区别判断上溢和下溢。用两个栈实现队列,就相当于把两个栈底靠在一起(背靠背),一个栈用来出队列,一个栈用来进队列。这个队列的操作时间大部分时候是常数时间,除了出列的栈为空,需要把进列的栈全部转移过去,再出列。Back()操作和Pop()操作类似,也是这样。而两个队列实现栈,队...
分类:
编程语言 时间:
2015-04-11 20:41:49
阅读次数:
254
题目大意:给定两个串A和B,要求将A中删掉所有的B后输出
为何BC群刚有人问完我这题的【C++语法基础题】版之后就出了个KMP版的= =
维护一个栈,将A中的字符依次加进去,一旦A的栈顶出现了B就弹栈
用KMP算法来加速这个过程即可
#include
#include
#include
#include
#define M 1001001
using namespace std;
...
分类:
编程语言 时间:
2015-04-09 10:39:21
阅读次数:
192
用C++写了一个栈模板,其间用了一些《Effective C++》的准则,记录在这里喽。这个类还没有做到异常安全,以后改进!
Stack.h文件。#ifndef _STACK_H_
#define _STACK_H_namespace MyDataStructure
{
template
class Stack
{
private:...
分类:
其他好文 时间:
2015-04-09 08:50:42
阅读次数:
117
思路:利用栈的来实现,而递归本质上就是一个栈结构 1 #include 2 #include 3 4 /* 5 剑指offer 6 Pro5 反转链表输出 7 xsfelvis 8 */ 9 //定义链表的结构类型10 typedef struct LNode11 {12 int da...
分类:
其他好文 时间:
2015-04-05 20:13:59
阅读次数:
124
在一个数组中实现两个栈,当数组未填满是任一个栈不能溢出。解法是将一个栈从头开始往后插入,而另一个从后往前插入,如果插入一个元素后,两个栈的top指针未相遇,则表示数组未满,栈没有溢出。#include "stdafx.h"
#include using namespace std;
struct special_stack
{
int capcity;
int l...
分类:
编程语言 时间:
2015-04-05 10:33:35
阅读次数:
402
括号的匹配括号的匹配问题简单的分析一下可以用的括号可以分为以下几种"()""[]""{}"""匹配过程中又以下四种情况左右括号乱序左括号比右括号多右括号比左括号多匹配算法思路定义一个栈,根据栈后进先出的特性进行括号匹配依次读入一个字符当这个字符是左括号时,将其压入栈顶重复第二步,如果字符时右括号将栈...
分类:
其他好文 时间:
2015-04-03 21:01:00
阅读次数:
141
#include
#include
#include
using namespace std;
/*两个队列模拟一个堆栈*/
/*队列A、B
入栈:将元素依次压入到非空的队列,第一个元素压倒对列A
出栈:把队列A的前n-1个元素倒到队列B,把第n个元素去掉。此时数据在B中,下次操作,则对B操作。
栈顶:把队列A的前n-1个元素倒到队列B,把第n个元素作为栈顶*/ ...
分类:
其他好文 时间:
2015-04-01 15:26:52
阅读次数:
112
解决此题方法类似于凸包,先把所有直线按照斜率a由小到大排序斜率相同取b较大的,扔掉b小的 (可以在遍历的时候忽视)。于是所有直线斜率不同。准备一个栈 (手动模拟),栈里面存放上一次能看到的“最上面”的直线以及这条直线能看到的范围x (x值右边的部分可以被看到)。初始时,把斜率最小的直线入栈,并记录x...
分类:
其他好文 时间:
2015-03-29 20:49:28
阅读次数:
123
【练习3.21】编写仅用一个数组而实现两个栈的例程。除非数组的每一个单元都被使用,否则栈例程不能有溢出声明。Answer:很简单,一个栈从数组头起,一个栈从数组尾起,分别保留左右栈头索引。如left=5则表示array[0]~array[4]为左栈元素,right=7则表示array[8]~arra...
分类:
编程语言 时间:
2015-03-21 00:59:42
阅读次数:
830