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

📄 后缀表达式求值1.txt

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

typedef struct linkstack
{
	stacknode *top;
}linkstack;

void initstack(linkstack *s)
{
 s->top=NULL;
}

void push(linkstack *s, int value)
{
	stacknode  *newnode=(stacknode *)malloc(sizeof(stacknode));
	if(!newnode)
	{
		printf("\n分配失败");
	}
	newnode->data=value;
	newnode->next=s->top;
	s->top=newnode;
}

int  pop(linkstack *s)
{
	int tmp;
	stacknode *p=s->top;
	if(s->top!=NULL)
	{
		tmp=s->top->data;
		s->top=s->top->next;
		free(p);
		return tmp;
	}
	else
	{
		printf("this stack is empty!");
		return 0;
	}
		
}


int empty(linkstack *s)
{
	if(s->top=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);
	}
	return 0;
}

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




⌨️ 快捷键说明

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