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.pswp.cn/news/376713.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376713.shtml
英文地址,請注明出處:http://en.pswp.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://…