#include
#include
#include
//鏈式棧:括號匹配校驗
#define success 0
#define failure 1
typedef
struct nodestnode_def;
typedef
struct linkstackstlinkstack_def;
typedef
void
(*stackprint)
(void*)
;//棧初始化
stlinkstack_def*
stack_init()
//棧頂插入元素
intstack_push
(stlinkstack_def* stack, stnode_def* data)
data->next = stack->head.next;
stack->head.next = data;
stack->size++
;return0;
}//棧頂彈出元素
intstack_pop
(stlinkstack_def* stack)
if(stack->size ==0)
stnode_def* p =
&(stack->head)
; stack->head.next = p->next->next;
stack->size--
;return0;
}//獲取棧頂元素
void
*stack_top
(stlinkstack_def* stack)
return stack->head.next;
}//棧是否為空
intstack_empty
(stlinkstack_def* stack)
//清空棧
intstack_clear
(stlinkstack_def* stack)
stack->head.next =
null
; stack->size =0;
return success;
}void
stack_destory
(stlinkstack_def* stack)
//遍歷棧,不需要清空棧
intstack_print
(stlinkstack_def* stack,
void
(*stackprint)
(stnode_def*))
stnode_def* p =
&(stack->head)
;while
(p->next !=
null
)return success;
}typedef
struct mydatastmydata_def;
stmydata_def*
create_malloc
(char p,
int i)
void
mydata_print
(stmydata_def* info)
void
show_error
(char
* str,
int index)
printf
("^\n");
}int
isleftkh
(char c)
intisrightkh
(char c)
intisleftzkh
(char c)
intisrightzkh
(char c)'?
1:0;
}int
isleftfkh
(char c)
intisrightfkh
(char c)
intmain()
]]}"
; stlinkstack_def* stack=
stack_init()
;int i =0;
while
(szbuff[i]
!='\0')if
(isrightkh
(szbuff[i]))
else
}else
}elseif(
isrightzkh
(szbuff[i]))
else
\"沒有匹配到對應的\"
}else
\"沒有匹配到對應的\"
}elseif(
isrightfkh
(szbuff[i]))
else
}else
}
i++;}
while
(stack->size >0)
printf
("empty:%d, size=%d\n"
,stack_empty
(stack)
, stack->size)
;stack_print
(stack, mydata_print)
;printf
("\n");
printf
("empty:%d\n"
,stack_empty
(stack));
stack_clear
(stack)
;printf
("empty:%d\n"
,stack_empty
(stack));
stack_destory
(stack)
;return0;
}
資料結構 棧的應用 括號匹配的檢驗
棧的應用 括號匹配的檢驗 演算法內容 以此掃瞄所有字元,遇到左括號入棧,遇到右括號則彈出棧頂元素檢查是否匹配。匹配失敗的情況 1.左括號單 2.右括號單 3.左右括號不匹配 include include define maxsize 10 定義棧中元素的最大個數 typedef struct sq...
資料結構之棧(2 1)應用 括號匹配
編寫乙個演算法,判斷鍵盤輸入的表示式是否配對。假設括號只包含 1 所謂括號配對,就是 2 輸入的字串中,可能包含 也可能沒有 數字,及其他符號。3 每當掃瞄字串元素 現 需要進行括號匹配檢查。檢查方式為 看最近出現的 而用什麼儲存 呢?棧是選擇之一。那棧的儲存狀態是,要麼有 要麼為空。4 根據以上分...
《資料結構》棧的應用一 括號匹配檢測
括號匹配檢測問題的簡單描述 假設表示式中允許包含兩種括號 圓括號和方括號,其巢狀的順序隨意,即 或者 等為正確的格式,或者 等均為不正確的格式。我實現的程式中包含三種括號,其實包含多少種都是一樣的,重在理解結題思路,利用棧來解決一些問題。下面給出我自己實現的源 僅供參考 init.h ifndef ...