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

#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. what are the associated papers accepted at the Harvard business review from cambridge
  2. 从html表单内提取信息,如何从JavaScript中获取FormData中的数据?
  3. java 线程 cpu_java程序中线程cpu使用率计算
  4. linux实例 批量修改图片文件名
  5. 理论基础 —— 排序
  6. 兴业银行研发中心笔试题_2021国考笔试成绩即将发布,面试重点考什么?
  7. 【个人笔记】rabbitMQ下Fanout与Topic两种模式同时用注意事项
  8. 3. 盒子模型与兼容性
  9. String类中重写Object中的equals方法源码解析
  10. RTKLIB源码解析(三)、 Rinex文件读取(rinex.c)——2
  11. 分布式室内空气质量监测系统设计
  12. 自行搭建 Bitwarden 服务
  13. 自动驾驶领域常见专业英文名词及其含义
  14. 怎么安装原版win8系统?U盘安装原版win8系统方法
  15. 第三方Banner制作轮播图的具体方法
  16. Vue+H5 活动内容调用微信分享
  17. 来来来,做几道「送命题」
  18. 计算机工程怎么评,美国电气与计算机工程专业怎么样?评价如何
  19. wordpress与微信公众号对接
  20. 深度学习中的规范化(BN、LN等四种规范化)

热门文章

  1. 企业生产场景如何对CentOS进行分区
  2. 【转】删除已经存在的 TFS Workspace
  3. 理解快速生成树协议(RSTP)(二)
  4. 网络技术术语英汉对照
  5. 重启唯一的窗体实例,以及调用系统重启函数失败解决办法
  6. 转载 调用xvid 实现解码
  7. 【机器视觉】——相机和镜头的选择
  8. python args_Python可变参数*args和**kwargs用法实例小结
  9. sql2000导出mysql_如何将sql2000的数据库导入到mysql中?
  10. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波15 - 锐化高通滤波器 -拉普拉斯核(二阶导数)