NYOJ2括号配对问题

括号配对是最基本的栈的问题,它是栈入门的经典题目,思路是,如果是左括号直接进栈,如果是右括号,这时就要比较栈顶的元素与他是否匹配,如果匹配则出栈,否则进栈,下面是代码的实现:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 typedef struct stack{//定义栈来存储括号
 4     char ch;
 5     struct stack *next;
 6 }link_stack;
 7 link_stack * init_link_stack();
 8 link_stack * push_stack(link_stack *top, char ch);
 9 link_stack * pop_stack(link_stack *top);
10 int main()
11 {
12     int n;
13     scanf("%d", &n);
14     getchar();
15     while(n --)
16     {
17         link_stack * top;
18         top = init_link_stack();//初始化top指针
19         char ch[10001];
20         scanf("%s", ch); int i = 0;
21         while(ch[i] != '\0')//判断读到结束符
22         {
23             if(((ch[i] == ']') && (top -> ch == '['))||((ch[i] == ')') &&(top -> ch == '(')))//如果将要进栈的是右括号,判断栈顶元素是否为左括号,如果是就弹出
24                 top = pop_stack(top);
25             else
26                 top = push_stack(top, ch[i]);//否则压栈
27             i ++;
28         }
29         if(top -> ch == '0')//判断栈是否为空
30             printf("Yes\n");
31         else
32             printf("No\n");
33     }
34     return 0;
35 }
36 
37 link_stack * init_link_stack()//初始化栈函数
38 {
39     link_stack *node;
40     node = (link_stack *) malloc(sizeof(link_stack));
41     node -> next = NULL;
42     node ->ch = '0';
43     return node;
44 }
45 link_stack * push_stack(link_stack *top, char ch)//入栈函数
46 {
47     link_stack *node;
48     node = init_link_stack();
49     node -> ch = ch;
50     node -> next = top;
51     top = node;
52     return top;
53 }
54 link_stack * pop_stack(link_stack *top)//出栈函数
55 {
56     link_stack *node;
57     if(top -> next == NULL)
58         return top;
59     else
60     {
61         node = top;
62         top = top -> next;
63         free(node);
64         return top;
65 
66     }
67 
68 }

 

转载于:https://www.cnblogs.com/Howe-Young/p/3930914.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376713.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SVC编码简单了解

基本概念 可伸缩视频编码 SVC&#xff08;Scalable Video Coding&#xff09; 作为 H.264 标准的一个扩展,可用于生成不同帧率、分辨率和质量等可分层的视频流。 基本层编码最低层的时域、空域和质量流&#xff1b; 增强层以基本层作为起始点&#xff0c;对附加信息进行补充&a…

程序集系统重构机房收费系统——起步

这段间时一直在查找程序集系统之类的问题,在现正好有机会和大家同享一下. 开始机房收费系统重构也半个月过去了。但看自己的系统连一个简略的登录还没有实现。自己不免有些羞愧了。近来自己的习学态状总的说来还是不错的。但是由于自己对来原的识知把握的欠好所以致导了自己不知…

ie下的透明度,用滤镜filter:alpha

.box{ width:100px; height:100px; background-color:#000; filter:alpha(Opacity50); opacity: 0.5; } 转载于:https://www.cnblogs.com/liujinyu/p/3931087.html

mysql 修改字段类型

修改字段类型&#xff1a; alter table 表名 modify column 字段名 类型。 --如 alter table province_quality modify column quality float(8,2); mysql> describe province_quality ; --------------------------------------------------- | Field | Type |…

Ubuntu硬盘优化,降低硬盘温度(Acer V5 亲测成功 )

1.安装laptop-mode-tools sudo apt-get install laptop-mode-tools2.修改电源管理配置: laptop-mode.conf sudo vim /etc/laptop-mode/laptop-mode.conf修改配置文件&#xff1a; #有关参数的说明请参照文件里的注释说明 ENABLE_LAPTOP_MODE_ON_AC1 #当笔记本使用交流电时也开启…

XmlSerializer 对象的Xml序列化和反序列化,XMLROOT别名设置

这篇随笔对应的.Net命名空间是System.Xml.Serialization&#xff1b;文中的示例代码需要引用这个命名空间。 为什么要做序列化和反序列化&#xff1f;.Net程序执行时&#xff0c;对象都驻留在内存中&#xff1b;内存中的对象如果需要传递给其他系统使用&#xff1b;或者在关机时…

C++智能指针使用指南 part2:智能指针本身的方法以及使用建议

目录往期文章智能指针本身的方法对于unique_ptr对于shared_ptr对于weak_ptr使用建议1、使用工厂函数而非new构造对象2、在类内部调用其他类的方法3、在某类内部将当前对象指针共享给其他对象4、 智能指针只能管理堆对象&#xff0c;不能管理栈上对象5、不能将this指针直接托管给…

“/”应用程序中的服务器错误。

运行时错误 说明: 服务器上出现应用程序错误。此应用程序的当前自定义错误设置禁止远程查看应用程序错误的详细信息(出于安全原因)。但可以通过在本地服务器计算机上运行的浏览器查看。 详细信息: 若要使他人能够在远程计算机上查看此特定错误消息的详细信息&#xff0c;请在位…

JAVA_Collection容器

因为项目的需要&#xff0c;今天抽时间把JAVA中的容器复习了一下&#xff0c;为了以后的不时之需&#xff0c;现在把它记下来。 容器有其名&#xff0c;知其意&#xff0c;用来盛放数据的集合&#xff0c;JAVA中为我们提供了三种容器类&#xff1a;set、list、map&#xff0c;三…

对于enable_shared_from_this、shared_from_this使用笔记

文章为转载汇总 参考&#xff1a;C11标准库的一个工具类enable_shared_from_this的作用及原理分析 从这篇文章中可以知道&#xff1a; 当一个类public继承enable_shared_from_this时&#xff0c;会获得一个共有方法shared_from_this&#xff1a; class T : public enable_shar…

db file sequential read 事件的优化(一)

db file sequential read 事件的优化&#xff08;一&#xff09; db file sequential read等待事件有3个参数&#xff1a;file&#xff03;&#xff0c;first block&#xff03;&#xff0c;和block数量。在10g中&#xff0c;这等待事件受到用户I/O等待级别的影响。当处理db fi…

2014-08-26 遇到的小问题

不能快速的保存bug的确是很不爽的事情 &#xff0c;不仅客户着急 领导也着急 &#xff0c;自己也着急。。。。。。。。哈哈 原来好好的一个平台 简单的一个插入记录 突然就报错了 错误为 could not insert #9521 原来项目是用 NHibernate 做的插入 抛出的异常 真是无法定位到底…

Fatal error: Please read “Security“ section of the manual to find out how to run mysqld as root

.通过在命令后面加上–userroot 进行强制使用root账号启动。 cd /etc/init.d mysqld --userroot 参考&#xff1a; https://blog.csdn.net/huo_wa/article/details/117550307?spm1001.2101.3001.6650.2&utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7ECT…

取消cp别名'cp -i'(unalias)

在rhel4updae8系统是使用cp命令覆盖文件总是提示要输入yes或no&#xff0c;即使加上-f参数也无法强行覆盖。[2] 方法一&#xff1a; 输入alias命令&#xff0c;看到系统内部使用的是cp的别名。 #alias alias cpcp -i 输入unalias cp命令&#xff0c;解除别名。 unalias cp #&…

增加swap分区

在确定了服务器所需要使用的内存后&#xff0c;需要增加1024M的swap空间 具体操作&#xff1a; 1、dd if/dev/zero of/tmp/swap bs1M count1024M #创建1024M的文件块 2、mkswap /tmp/swap #创建swap文件 3、swapon /tmp/swap #激活swap文件 4、swapon -s #查看swap 5、修改…

python 实现 topk算法

这里的版本是针对的一个class的某一个成员变量进行的&#xff1a; 关于如何定义对象的比较方法&#xff0c;请参考往期文章&#xff1a;python定义对象的比较方法 class province_room_quality_data:def __init__(self, room, quality):self.room roomself.quality qualityd…

2013年,未知的旅程

去年就开始策划要辞职到外面去闯一闯&#xff0c;今年年初在上一家公司毅然辞职了&#xff0c;理由是自己需要出去锻炼锻炼。 带着一个月的工资&#xff0c;和一点积蓄&#xff0c;还有一个女朋友来到了这个我以前都没有来过的城市-深圳。 听好多人都说过深圳是个好地方&#x…

SQL基础

经过这几天我才发现原来我最弱的是数据库&#xff0c;好了现在就来补补吧 SQL(Struct Query Language) 结构化查询语言&#xff0c;属于第四代语言&#xff08;接近于自然语言&#xff09;符合主谓宾定状补 DDL (Data Define L)数据定义语言,创建一个数据库&#xff0c;创建一个…

主成分分析资料

推荐一份介绍主成分分析的资料&#xff1a;http://www.cs.otago.ac.nz/cosc453/student_tutorials/principal_components.pdf&#xff0c;写的很好&#xff01; 在R语言中使用PCA&#xff1a;http://www.cnblogs.com/bigshuai/archive/2012/06/18/2553808.html 转载于:https://…