该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

#include "malloc.h"

char * changeOrder(char *s);

struct Node

{

char *data;

struct Node * link;

};

struct Node * top1 = NULL;

struct Node * top2 = NULL;

void Push1(char *s)

{

struct Node * temp = (struct Node*) malloc(sizeof(struct Node));

temp->data = s;

temp->link = top1;

top1 = temp;

}

char * Pop1()

{

struct Node * temp;

if (top1 == NULL) return "No element found!";

temp = top1;

char *s = top1->data;

top1 = top1->link;

free(temp);

return s;

}

void Push2(char *s)

{

struct Node * temp = (struct Node*) malloc(sizeof(struct Node));

temp->data = s;

temp->link = top2;

top2 = temp;

}

char * Pop2()

{

struct Node * temp;

if (top2 == NULL) return "No element found!";

temp = top2;

char *s = top2->data;

top2 = top2->link;

free(temp);

return s;

}

//If a command has more than 50 character, or doesn't have ';'

//return 0. Else return 1.

int isLegal(char *s)

{

int smallNumber = 20;

if (strlen(s) < smallNumber) smallNumber = strlen(s);

for (int i = 0; i < smallNumber; i++)

{

if (s[i] == ';')

return 1;

}

return 0;

}

//Read one command form user input.

char *readCommand(char *s, int position)

{

if (isLegal(s) == 0)

{

return "Cannot find ';' in your command or the length"

" of your command is too long, try again!";

}

static char command[20];

int num = 0;

while (s[position] != ';')

{

command[num++] = s[position++];

}

command[num++] = ';';

return command;

}

char * changeOrder(char *s)

{

static char container[100];

int num = 0;

while (num < strlen(s))

{

if (s[num] == '(')

{

Push1("(");

num++;

}

else if (s[num] == ')')

{

while (true)

{

if (Pop1() == "(") break;

Push2(Pop1());

}

while (top2 != NULL)

{

strcat_s(container, Pop2());

}

}

else

{

char *t = readCommand(s, num);

Push1(t);

puts(t);

num += strlen(t);

}

}

while (top1 != NULL)

{

char *t = Pop1();

Push2(t);

}

while (top2 != NULL)

{

strcat_s(container, Pop2());

}

return container;

}

int main()

{

static char buf[] = { "command1;command2;command3;" };

puts(changeOrder(buf));

return 0;

}

c语言多重括号,大佬在吗,我用C写了一个去多重括号的函数,结果。。。相关推荐

  1. 在C语言的函数后标注small,大佬在吗,我用C写了一个去多重括号的函数,结果。。。...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include "malloc.h" char * changeOrder(char *s); ...

  2. 多重选择函数c语言,大佬在吗,我用C写了一个去多重括号的函数,结果。。。...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include "malloc.h" char * changeOrder(char *s); ...

  3. Algorithm:C++语言实现之链表相关算法(单链公共结点问题、一般LCA、括号匹配、最长括号匹配、逆波兰表达式Reverse Polish Notation、直方图矩形面积、收集雨水问题)

    Algorithm:C++语言实现之链表相关算法(单链公共结点问题.一般LCA.括号匹配.最长括号匹配.逆波兰表达式Reverse Polish Notation.直方图矩形面积.收集雨水问题) 目录 ...

  4. c语言switch语句支持的字符有哪些,C语言中switch()语句的括号内可以是什么型别的呢?...

    C语言中switch()语句的括号内可以是什么型别的呢?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C语言中swit ...

  5. java语言计算器怎么写_求助,一个计算器的括号功能怎么写啊。

    求助,一个计算器的括号功能怎么写啊. import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java. ...

  6. Go 语言创建者,大佬们的有趣的对话访谈

    卡门(Carmen)和乔恩(Jon)与罗​​布·派克(Rob Pike)和罗伯特·格里塞梅尔(Robert Griesemer)(Go的创造者)讨论了它的起源,增长,影响力和未来.这是一部史诗般的剧集 ...

  7. 世上最杰出程序员,B 语言、Unix 之父为玩游戏,写了个操作系统

    作者 | 年素清 责编 | 伍杏玲 出品 | 程序人生(ID:coder_life) Unix之父--肯•汤普森(Ken Thompson)被称作"世界上最杰出的程序员",他自学编 ...

  8. 使用c语言编程首先要新建,【C语言编程入门系列】—— 第三章,编写第一个C语言程序!...

    导读:一般学一门计算机语言的第一堂上机课("上机"顾名思义,上计算机,机你太美),就是往屏幕输出"hello world",本章也不例外. 3.1 Hello, ...

  9. python括号匹配o(1)复杂度_Python面试题:使用栈处理括号匹配问题

    括号匹配是栈应用的一个经典问题, 题目 判断一个文本中的括号是否闭合, 如: text = "({[({{abc}})][{1}]})2([]){({[]})}[]", 判断所有括 ...

最新文章

  1. Firefox beta 开始原生支持 Windows 10 ARM64
  2. caffe 人脸关键点检测_全套 | 人脸检测 人脸关键点检测 人脸卡通化
  3. 如何深拷贝一个对象数组?
  4. springMVC3学习(四)--訪问静态文件如js,jpg,css
  5. android两个耳机能连两部手机吗,AirPods使用技巧:如何让耳机同时连接两台手机...
  6. .NET架构小技巧(2)——访问修饰符正确姿势
  7. jquery 动态加载html,jQuery – 动态创建iframe并加载页面
  8. QT每日一练day9:设计师界面
  9. python中︿是什么意思_Python learning notes-0003-注释、变量、简单类型、运算符,学习,笔记...
  10. HTML5笔记:跨域通讯、多线程、本地存储和多图片上传技术
  11. python经济统计学论文_Python商务与经济统计学-1
  12. c语言编译器tc2.0,Wintc软件下载
  13. 字节跳动移动架构师学习笔记,Android篇
  14. 《互动教程 for Photoshop CC》已成功发布在App Store
  15. 在职位招聘数据处理中使用Loess回归曲线以及分箱、回归、聚类方法 检查离群点及光滑数据【数据挖掘机器学习】
  16. ibm笔记本修复计算机开机按,IBM X280开机报错,按了Esc后正常解决方法
  17. CAS-认证流程详解
  18. L2-040 哲哲打游戏 - java
  19. springboot大学生拼车管理系统毕业设计源码201507
  20. 超哥笔记--shell 基本命令(4)

热门文章

  1. js正则表达exec和match的区别(转)
  2. mynt product model: D1000-IR-120标定相机和IMU外参之二
  3. HDCVI——一种创新性的高清视频传输方案
  4. C#中json序列化与反序列化
  5. 牛顿法与拟牛顿法,SDM方法的一些注记
  6. python查询模块所有类_python 小技巧(import模块、查询类继承关系、安装包)
  7. html如何播放h264视频,浏览器 – 我如何播放H264视频?
  8. ipoo3可以用鸿蒙,iqooneo3支持无线充电吗_iqooneo3可以无线充电吗
  9. linux防ddos 软件下载,linux下防DDOS工具
  10. php .htaccess 的作用,php .htaccess文件使用详解