⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sqstack.h

📁 用栈实现中缀表达式求值的问题。同时实现了逆波兰表达式的问题。
💻 H
字号:
#include <stdlib.h>
#include "Status.h"

#define STACK_INIT_SIZE 100

typedef struct 
{
	char *base;
	char *top;
}Stack_Char;

typedef struct 
{
	double *base;
	double *top;
}Stack_Double;

//---------顺序栈的基本操作--------------
Status InitStack(Stack_Char &S)
{//初始化顺序栈
	S.base = new char[STACK_INIT_SIZE];
	if(!S.base)	 exit(-2);

	S.top = S.base;

	return OK;
}

Status InitStack(Stack_Double &S)
{//初始化顺序栈
	S.base = new double[STACK_INIT_SIZE];
	if(!S.base)	 exit(-2);
	
	S.top = S.base;
	
	return OK;
}
//////////////////////////////////////////////////////

Status DestroyStack(Stack_Char &S)
{//销毁顺序栈
	if(S.base)
		delete []S.base;

	S.base = S.top = NULL;
	
	return OK;
}

Status DestroyStack(Stack_Double &S)
{//销毁顺序栈
	if(S.base)
		delete []S.base;
	
	S.base = S.top = NULL;
	
	return OK;
}
///////////////////////////////////////////////////////

char GetTop(Stack_Char &S)
{//用e返回栈顶元素
//	if(S.top == S.base)	 return ERROR;

	char e;

	e = *(S.top - 1);

	return e;

}

double GetTop(Stack_Double &S)
{//用e返回栈顶元素
//	if(S.top == S.base)	 return ERROR;
	
	double e;
	
	e = *(S.top - 1);
	
	return e;
}
///////////////////////////////////////////////////////

Status Push(Stack_Char &S, char e)
{//将e压栈
	if(S.top - S.base >= STACK_INIT_SIZE)
		exit(-2);

	*S.top++ = e;

	return OK;
}

Status Push(Stack_Double &S, double e)
{//将e压栈
	if(S.top - S.base >= STACK_INIT_SIZE)
		exit(-2);
	
	*S.top++ = e;
	
	return OK;
}
//////////////////////////////////////////////////////////

Status Pop(Stack_Char &S, char &e)
{//出栈
	if(S.top == S.base)
		return ERROR;

	e = *(--S.top);

	return OK;
}

Status Pop(Stack_Double &S, double &e)
{//出栈
	if(S.top == S.base)
		return ERROR;
	
	e = *(--S.top);
	
	return OK;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -