棧應用_檢測成對符號是否正確使用(代碼、分析、匯編)

目錄:

    • 代碼:
    • 分析:
    • 匯編:

代碼:

LinkList.h
LinkList.c
LinkStack.h
LinkStack.c
棧-線性表

main.c

#include <stdio.h>
#include <stdlib.h>
#include "LinkStack.h"//該程序是檢查字符串中的出現一對符號時,有沒有出現交叉錯誤使用
/*
比如: < ( > )  這種情況檢測失敗< > ( ) 這種情況檢測成功< ( ) > 這種情況檢測成功 
*/int isLeft(char c)//是否一對符號的左邊
{int ret = 0;switch(c){case '<':case '(':case '[':case '{':case '\'':case '\"':ret = 1;break;default:ret = 0;break;}return ret;
}int isRight(char c)//是否是一對符號的右邊
{int ret = 0;switch(c){case '>':case ')':case ']':case '}':case '\'':case '\"':ret = 1;break;default:ret = 0;break;}return ret;
}int match(char left, char right)//配對是否是一對符號
{int ret = 0;switch(left){case '<':ret = (right == '>');break;case '(':ret = (right == ')');break;case '[':ret = (right == ']');break;case '{':ret = (right == '}');break;case '\'':ret = (right == '\'');break;case '\"':ret = (right == '\"');break;default:ret = 0;break;}return ret;
}int scanner(const char* code)//字符串檢測函數
{LinkStack* stack = LinkStack_Create();//創建棧int ret = 0;int i = 0;while( code[i] != '\0' )//將字符串中每個字符比較{if( isLeft(code[i]) )//如果是一對字符的左邊部分{LinkStack_Push(stack, (void*)(code + i));//將該字符地址添加進棧}if( isRight(code[i]) )//如果是一對字符的右邊部分{char* c = (char*)LinkStack_Pop(stack);//取出數據出棧if( (c == NULL) || !match(*c, code[i]) )//如果數據等于空或者這兩邊字符并不是一對{printf("%c does not match!\n", code[i]);//輸出該字符沒有配對成功ret = 0;break;//退出查找字符串剩下字符  只要一對符號不正確使用就不用再查找剩下的字符}}i++;}if( (LinkStack_Size(stack) == 0) && (code[i] == '\0') )//如果執行到這里棧內沒有數據并全部字符檢查完畢{printf("Succeed!\n");//輸出成功ret = 1;}else{printf("Invalid code!\n");//否則輸出失敗ret = 0;}LinkStack_Destroy(stack);//銷毀棧return ret;//返回結果
}int main(int argc, char *argv[])
{const char* code = "#include <stdio.h> int main() { int a[2][5]; int (*p)[3]; p = a[0]; printf(\"%d\\n\", &p[2][3] - &a[1][3]); return 0; }";scanner(code);getchar();return 0;
}

分析:

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

匯編:

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/379245.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/379245.shtml
英文地址,請注明出處:http://en.pswp.cn/news/379245.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Oracle 參數分類 和 參數的查看方法

Oracle數據庫系統根據初始化參數文件init.ora中設置的參數來配置自身的啟動&#xff0c;每個實例在啟動之前&#xff0c;首先讀取這些參數文件中設置的不同參數。 Oracle系統中的參數&#xff0c;根據系統使用情況可以簡單分為兩大類&#xff1a; 普通參數&#xff1a;也就是Or…

java 方法 示例_Java集合checkedList()方法與示例

java 方法 示例集合類checkedList()方法 (Collections Class checkedList() method) checkedList() Method is available in java.lang package. CheckedList()方法在java.lang包中可用。 checkedList() Method is used to return the typesafe view of the given List at runt…

ParameterizedTypeImpl

關于“通過反射獲得泛型的參數化類型”的問題&#xff1a; 下面是張老師 通過反射獲得泛型的參數化類型的一段代碼import java.util.*; import java.lang.reflect.*;public class GenericalReflection { private Vector<Date> dates new Vector<Date>(); public v…

Spyder打開報錯解決辦法

刪除C:\Users\Administrator路徑下.matplotlib和.spyder-py3&#xff08;你的有可能是.spyder2或.spyder3&#xff09;這兩個文件夾&#xff0c;然后再重啟Spyder即可 &#xff08;本人也是查找多篇大佬博客然后最后找到的解決方法&#xff09;

ERP軟件銷售的方法論--SPIN銷售法(SPIN Selling)

有許多人一直在做的ERP軟件產品的銷售&#xff0c;也接受了許多關于銷售方法的培訓&#xff0c;我所了解的就包括有C139&#xff0c;用友的《策略九問》等方法&#xff0c;但其實行業內早就有先驅創立了相關的銷售方法&#xff0c;那就是SPIN銷售法&#xff0c;之前一直都是只知…

ffmpeg - AVPacket內存問題分析(AVFrame一樣的)

目錄&#xff1a;1、av_packet_alloc()和av_packet_free()2、av_init_packet()的問題3、av_packet_move_ref()的問題4、av_packet_clone()的問題5、AVPacket的引用計數問題6、 AVFrame一樣的1、av_packet_alloc()和av_packet_free() 源碼中av_packet_unref()調用av_buffer_unre…

Java類class isSynthetic()方法及示例

類的類isSynthetic()方法 (Class class isSynthetic() method) isSynthetic() method is available in java.lang package. isSynthetic()方法在java.lang包中可用。 isSynthetic() method is used to check whether this Class is a synthetic class or not. isSynthetic()方法…

BNU OJ 第26303 題 Touchscreen Keyboard

BNU OJ第26303題Touchscreen Keyboard&#xff08;題目鏈接&#xff09;的解題報告。 原題如下&#xff1a; Touchscreen Keyboard Problem Description Nowadays, people do not use hardware keyboards but touchscreens. Usually, they touch on the wrong letters with the…

列表(二)

1&#xff0c;什么是列表&#xff1f; 列表由一系列按特定順序排列的元素組成。得知列表內的元素是有序的。 在Python中&#xff0c;用方括號&#xff08;[]&#xff09;來表示列表&#xff0c;并用逗號來分隔其中的元素。 color [red,blue,black,yellow]#定義一個字符串列表…

Zigbee在.Net Micro Framework系統中的應用

Zigbee是IEEE 802.15.4協議的代名詞。根據這個協議規定的技術是一種短距離、低功耗的無線通信技術。這一名稱來源于蜜蜂的八字舞&#xff0c;由于蜜蜂(bee)是靠飛翔和“嗡嗡”(zig)地抖動翅膀的“舞蹈”來與同伴傳遞花粉所在方位信息&#xff0c;也就是說蜜蜂依靠這樣的方式構成…

ffmpeg-AVFrame分配內存問題

目錄&#xff1a;1、格式&#xff1a;交錯式2、格式&#xff1a;平坦式3、總結&#xff1a;1、格式&#xff1a;交錯式 LRLRRLRLRLRLRLRLRLR 2、格式&#xff1a;平坦式 LLLLLLRRRRRR 3、總結&#xff1a; 兩種方式的內存排列在AVFrame中分配是有區別的 交錯式在一個buf…

stl中map函數_map :: empty()函數以及C ++ STL中的Example

stl中map函數C STL映射:: empty() (C STL map::empty()) It is built-in function in C STL and used to check whether the map container is empty or not i.e whether its size is 0 or not? 它是C STL中的內置函數&#xff0c;用于檢查地圖容器是否為空&#xff0c;即其…

C#使用Dotfuscator混淆代碼以及加密

C#編寫的代碼如果不進行一定程度的混淆和加密&#xff0c;那么是非常容易被反編譯進行破解的&#xff0c;特別是對于一些商業用途的C#軟件來說&#xff0c;因為盯著的人多&#xff0c;更是極易被攻破。使用Dotfuscator可以實現混淆代碼、變量名修改、字符串加密等功能。 這里介…

操作列表(三)

1&#xff0c;for循環(for 變量名 in 列表名:) phone [iphone 8, xiaomi10pro, huaweiv30pro, honor20, jianguopro]#定義一個列表phone for tel in phone:print("手機的類型為&#xff1a;" tel.title())#當然這里的每個元素也可以調用title()等一些方法 print(&…

C#特性之通俗演義

首先要說的是&#xff0c;可能一些剛接觸C#的朋友常常容易把屬性&#xff08;Property&#xff09;跟特性&#xff08;Attribute&#xff09;弄混淆&#xff0c;其實這是兩種不同的東西。屬性就是面向對象思想里所說的封裝在類里面的數據字段&#xff0c;其形式為&#xff1a; …

棧應用_計算按運算符優先級分布的算式(代碼、分析、匯編)

目錄&#xff1a;代碼&#xff1a;分析&#xff1a;匯編&#xff1a;代碼&#xff1a; LinkList.h LinkList.c LinkStack.h LinkStack.c 棧-線性表 main.c #include <stdio.h> #include "LinkStack.h"//該程序用棧來計算算式 /*比如&#xff1a;1*56/(5-3)…

php globals_PHP $ GLOBALS(超級全局變量),帶有示例

php globalsPHP $全球 (PHP $GLOBALS) PHP $GLOBALS is the only superglobal that does not begin with an underscore (_). It is an array that stores all the global scope variables. PHP $ GLOBALS是唯一不以下劃線( _ )開頭的超全局變量。 它是一個存儲所有全局范圍變量…

安裝部署項目(轉自)

1 新建安裝部署項目 打開VS&#xff0c;點擊新建項目&#xff0c;選擇&#xff1a;其他項目類型->安裝與部署->安裝向導(安裝項目也一樣)&#xff0c;然后點擊確定。 2 安裝向導 關閉后打開安裝向導&#xff0c;點擊下一步&#xff0c;或者直接點擊完成。 3 開始制作…

java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver

更改jdk&#xff0c;版本過高的緣故&#xff0c;更改jdk為1.7版本

kotlin 查找id_Kotlin程序查找給定范圍內的素數

kotlin 查找idA prime number is a natural number that is greater than 1 and cannot be formed by multiplying two smaller natural numbers. 質數是大于1的自然數&#xff0c;不能通過將兩個較小的自然數相乘而形成。 Given a range start and end, we have to print al…