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

📄 function.c

📁 这是有关数据结构的例程序
💻 C
字号:
#include<stdio.h>
#include<malloc.h>
#include"definition.h"

int InitStack(SqStack *S) //创建一个空栈
{
	S->base=(int *)malloc( INIT_SIZE * sizeof(int) );
	if(!S->base) //空间分配失败
		return 1;
	//空间分配成功
	S->top=S->base;//置栈顶指针
	S->stacksize=INIT_SIZE;//栈大小
	return 0;
}

int GetTop(SqStack *S) //返回栈顶元素
{
	if(S->base==S->top)//栈空,返回0
		return 0;
	return *(S->top - 1);//栈不空,返回栈顶元素
}

int Push(SqStack *S, int e) //插入栈顶
{
	if( (unsigned)(S->top - S->base) >= S->stacksize){//栈满,追加存储空间
		S->base=(int *)realloc(S->base, (S->stacksize+INCREMENT)*sizeof(int) );
		if(!S->base)//分配失败,返回1
			return 1;
		//分配成功
		S->top = S->base + S->stacksize;//置栈顶指针
		S->stacksize += INCREMENT;//栈大小
	}

	*S->top++ = e; //接收输入后,S->top指向栈顶元素的下一个位置

	return 0;
}

int Pop(SqStack *S) //删除栈顶元素
{
	if(S->base == S->top)//空栈,返回0
		return 0;
	return *( --(S->top) );//不空,栈顶指针下移(即删除栈顶元素),并且返回栈顶元素
}

int Chk(int e)//检查输入合法性
{
	if( e<'0' || e>'9'){
		switch(e){
		case '(': case ')': case '+': case '-': case '*': case '/': case '\n':
			return 2;
		default:
			return 0;
		}
	}

	return 1;
}

int Precede(int top, int e)//判断符号优先级
{
	switch(top){
	case '+': case '-':
		if(e=='+' || e=='-' || e==')' || e=='\n' )
			return 1;
		return -1;
	case '*': case '/':
		if(e=='(')
			return -1;
		return 1;
	case '(':
		if(e==')')
			return 0;
		if(e=='\n')
			return 2;
		return -1;		
	case ')':
		if(e=='(')
			return 2;
		return 1;
	case 0:
		if(e=='\n')
			return 0;
		if(e==')')
			return 2;
		return -1;
	default:
		return 2;
	}
}

int Operate( int a, int op, int b)//进行运算
{
	switch(op){
	case '+':
		return a+b;
	case '-':
		return a-b;
	case '*':
		return a*b;
	case '/':
		return a/b;
	default:
		return 0;
	}
}

⌨️ 快捷键说明

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