真正學習之後,才發現那些所謂的大嬸不過是多用功了些。不知道以前為什麼不親自動手做做,原來這麼簡單。#include #include #include #include /**棧的鏈式儲存**/
typedef struct data;
typedef struct stack;
/**初始化空棧**/
void initstack(stack *s)
/**判斷是否為空棧**/
int stackempty(stack s)
/**返回棧頂元素**/
void gettop(stack s,data *d)
}/**向棧頂插入新元素 入棧**/
void pushstack(stack *s,data d)
/**從棧頂刪除元素 出棧**/
void popstack(stack *s,data *d)else
}/**清空棧**/
void clearstack(stack *s)else
}/**列印棧內資訊**/
void printstack(stack s)else }}
/**檢查右括號與棧頂元素是否匹配**/
int match(data r,data s)else if(r.c=='}'&&s.c=='else if(r.c==']'&&s.c=='[')else
}/**括號匹配**/
void checkmatch(char *m,stack *s)':
case ']':
if(stackempty(*s))
gettop(*s,&s);
r.c = *m;
if(match(r,s))else
default:
*m++;
} }if(stackempty(*s))else
}void main()
資料結構 鏈棧實現括號匹配
最近在學資料結構,所以發的大多數都是關於資料結構的題 括號匹配原來用動態規劃做的一道題,現在老師要用棧來實現,用就用吧,還不讓用函式,只能用鏈棧,不開森 很簡單的思路,如果是 就看棧頂元素是否匹配,匹配就往下操作,如果表示式完了,棧不為空,不匹配 如果棧空了,表示匹配 下面是 的實現 include...
資料結構(二) 棧及實現 括號匹配
一 棧的概念與特點 一種特殊的線性表,它的插入和刪除運算均在同一端進行。這一端被稱為棧頂,另一端為棧底,插入稱為進棧,刪除稱為出棧。有後進先出的性質。棧頂top相當於順序表中的size,即元素個數。關於順序表可以參考資料結構 一 順序表及實現 注 沒有a n 這個元素。n是元素的數量 二 棧的操作及...
括號匹配 資料結構 棧 C
在程式設計當中我們只會用到三種括號 圓括號 方括號和花括號 編譯器在編譯的時候會檢查括號是否正確匹配。例如 都是合法的匹配。但是 則是不合法的匹配。請編寫乙個程式來判斷輸入的括號序列是否合法。輸入測試資料由多組,每組資料有一行,為 組成的序列,長度不超過1000 輸出對於每組資料輸出一行,如果是合法...