IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构-中缀式转后缀式-C语言实现 -> 正文阅读

[数据结构与算法]数据结构-中缀式转后缀式-C语言实现

数据结构-中缀式转后缀式-C语言实现

#include<stdio.h>
#include<stdlib.h>
int length(char String[]) {
	int count = 0;
	for (int i = 0; String[i] != '\0'; i++)
		count++;
	return count;
}
void after(char String[]) {
	int len = length(String);
	char stack[19];
	//char *stack = (char *)malloc(sizeof(char)*len);
	char ch[6] = { '+','-','*','/','(',')' };
	int top = -1;
	for (int i = 0; i < len; i++) {
		//printf("c:%c\n", String[i]);
		int flag = 0;//判断是否是字母还是运算符
		for (int j = 0; j < 6; j++) {
			if (String[i] == ch[j]) {
				flag = 1;
				break;
			}
		}
		//printf("%d\n", flag);
		if (flag == 0) {
			printf("%c", String[i]);
			continue;
		}
		else {
			if (String[i] == ')') {//(*)内容全部出栈
				for (; stack[top] != '('; top--) {
					printf("%c", stack[top]);
				}
				top--;
				//printf("%d\n", top);
				continue;
			}
			if (top == -1 || String[i] == '(') {
				stack[++top] = String[i];
				continue;
			}
			else {
				if (stack[top] == '(') {
					stack[++top] = String[i];
					continue;
				}

				int pr, pp;//pr表示字符当前状态,pp表示栈顶状态,用数字表示-+为0,*/为1
				if (String[i] == '+' || String[i] == '-') {
					pr = 0;
				}
				if (String[i] == '*' || String[i] == '/') {
					pr = 1;
				}
				if (stack[top] == '+' || stack[top] == '-') {
					pp = 0;
				}
				if (stack[top] == '*' || stack[top] == '/') {
					pp = 1;
				}
				if (pr <= pp) {
					int cc = 0;
					for (int j = 0; j <=top; j++)
						if (stack[j] == '(') {
							cc = 1; break;
						}
					if (cc == 1) {
						for (; stack[top] != '('; top--)
							printf("%c", stack[top]);
					}
					else
					{
						for (; top >= 0; top--)
							printf("%c", stack[top]);
					}
					stack[++top] = String[i];
				}
				else {
					stack[++top] = String[i];
				}
			}
		}
	}
	for (; top != -1; top--) {
		printf("%c", stack[top]);
	}
}
void main()
{
	char String[] = "a+b-a*((c+d)/e-f)+g";
	after(String);
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:44:27  更:2022-05-05 11:48:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:51:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码