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

📄 后缀表达式求值.c

📁 数据结构学习用到的一些程序!!里面有二叉树相关的几个
💻 C
字号:
#include<stdio.h>
#include<stdlib.h>
struct node
{
	int data;
	struct node *next;
};
typedef struct node list;
typedef list *link;
link operand=NULL;

link push(link stack,int value)
{
	link newnode;
	newnode=(link)malloc(sizeof(list));
	if(!newnode)
	{
		printf("\n分配失败");
		return NULL;
	}
	newnode->data=value;
	newnode->next=stack;
	stack=newnode;
	return stack;
}

link pop(link stack,int *value)
{
	link top;
	if(stack!=NULL)
	{
		top=stack;
		stack=stack->next;
		*value=top->data;
		free(top);
		return stack;
	}
	else
		*value=-1;
    return NULL;
}


int empty(link stack)
{
	if(stack=NULL)
		return 1;
	else 
		return 0;
}


int is_operator(char oper)
{
	switch (oper)
	{
	case '+':
	case '-':
	case '*':
	case '/':  return 1;
    default :  return 0;
	}
}


int two_result(int oper,int oper1,int oper2)
{
	switch (oper)
	{
	case '+':  return (oper1+oper2);
	case '-':  return (oper1-oper2);
	case '*':  return (oper1*oper2); 
	case '/':  return (oper1/oper2);
	}
	
}

void main()
{
	char expression[50];
	int position=0;
	int oper1=0;
	int oper2=0;
	int result;
	printf("\n请输入后缀表达式:");
	gets(expression);
	while(expression[position]!='\0' && expression[position]!='\n')
	{
		if(is_operator(expression[position]))
		{
			operand=pop(operand,&oper1);
            operand=pop(operand,&oper2);
			operand=push(operand,two_result(expression[position],oper2,oper1));
		}
		else
		{
			operand=push(operand,expression[position]-48);
		}
		position++;
		
	}
	operand=pop(operand,&result);
	printf("此后缀表达式[%s]的结果是%d\n",expression,result);
}




⌨️ 快捷键说明

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