各位大侠们,C数据结构的出栈和入栈有什么作用?可以用到哪个领域?

来源:百度知道 编辑:UC知道 时间:2024/06/01 09:55:22
各位大侠指点一下

很多领域啊,比如c语言中的括号匹配就是使用的堆栈,比如
int a= int(((1+3.2)*5+3)/2);
语法分析器工作的时候就安照以下原则解析括号匹配:
1。凡是遇到左括号就压入栈;
2。如果是右括号就与最后入栈的左括号匹配(出栈);
3。如果是右括号而栈为空就报错(栈空,相当于右括号找不到左括号匹配);
4。语句完成后栈不为空就报错(语句结束栈不空,相当于左括号找不到右括号匹配);
这样左右括号就匹配了。
其他领域用到栈的地方很多,操作系统的中断机制也是用的栈机制。

#ifndef LISTSTACK_H
#define LISTSTACK_H

#include <iostream.h>
#include <assert.h>
template <class Type> class Stack;
template <class Type>
class StackNode
{
friend class Stack<Type>;

private:
Type data;
StackNode<Type> *link;
StackNode(Type d=0,StackNode<Type> *l=NULL):data(d),link(l){}
};

template <class Type>
class Stack
{
public:
Stack():top(NULL){}
~Stack();
void Push(const Type &item);
Type Pop();
Type GetTop();
void MakeEmpty();
int IsEmpty() const { return top==NULL; }
private:
StackNode&l