stack.h

来自「是一个不错的语法分析器,里面实现了语法分析的算法,并判断了一些优先级的控制和对栈」· C头文件 代码 · 共 86 行

H
86
字号
/************************************************************

  Title:    Operator-Precedence Parsing
  Author:   Dake Song, Class 0201 of Computer Science
  Date:     Mar.18 of 2005

**************************************************************/

#ifndef STACK_H
#define STACK_H

#include "Global.h"

/*
	Stack operates			*/
void InitStack();
bool Push(const char*);
bool Pop(char*);
bool TopValue(char*);
void PrintStack();

/*
	Stack attributes		*/
char TheStack[STACKSIZE];
int  StackTop;

/*
	Implement stack operates	*/
void InitStack()
{
	char c = '#';
	StackTop = 0;
	Push(&c);
}

bool Push(const char* c)
{
    if (StackTop < STACKSIZE)
    {
        TheStack[StackTop++] = *c;
        return true;
    }
    else
    {
        return false;
    }
}

bool Pop(char* c)
{
    if (StackTop >= 0)
    {
        *c = TheStack[--StackTop];
        return true;
    }
    else
    {
        return false;
    }
}

bool TopValue(char* c)
{
	if (StackTop > 0)	/* not null */
	{
		*c = TheStack[StackTop-1];
		return true;
	}
	else
	{
		return false;
	}
}

void PrintStack()
{
	int i;
	for (i=0;  i<StackTop; i++)
	{
		printf("%c", TheStack[i]);
	}
	printf("\n");
}

#endif

⌨️ 快捷键说明

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