資料結構 棧的應用 括號匹配

2021-10-09 17:26:09 字數 2861 閱讀 1122

#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 ...