資料結構之棧及棧的應用(括號匹配問題)

2021-08-18 14:02:13 字數 1963 閱讀 2460

棧簡介

棧是一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行資料插入和刪除操作的一段稱為棧頂,另一端稱為棧底。不含任何元素的棧稱為空棧,其特點為 先進後出。

棧功能:可以將資料從一種序列變為另一種序列

注:來自網路

//1. 實現棧的如下介面-- - 實現成動態棧

typedef

int datatype;

typedef

struct stack

stack;

//棧的初始化

void stackinit(stack* s);

// 入棧

void stackpush(stack* s, datatype data);

// 出棧

void stackpop(stack* s);

// 獲取棧頂元素

datatype stacktop(stack* s);

// 有效元素的個數

int stacksize(stack* s);

// 檢測棧是否為空

int stackempty(stack* s);

// 棧的應用

//2. 用棧解決括號匹配問題,測試用例見課件

void parenthesis_match(stack *s, char *str);

//3. 用棧求解字尾表示式值

//棧的初始化

void stackinit(stack* s)

// 入棧

void stackpush(stack* s, datatype data)

*s->_top++ = data;

return;

}// 出棧

void stackpop(stack* s)

// 獲取棧頂元素

datatype stacktop(stack* s)

// 有效元素的個數

int stacksize(stack* s)

return count;

}// 檢測棧是否為空

int stackempty(stack* s)

else

printf("stack isn』t empty\n");

return1;}

// 棧的應用

//2. 用棧解決括號匹配問題,測試用例見課件

void parenthesis_match(stack *s, char *str)

; datatype i = 0;

datatype flag = 0;

printf("請輸入字串:\n");

scanf("%s", str);

scanf("%c", &enter);

while (str[i] != '\0')

break;

case

']':

break;

case

'}':

break;

}if (flag)

return;

i++;

}if (!(flag && stackempty(s)))

printf("括號匹配成功!\n");

else

printf("括號匹配失敗!\n");

}

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

include include include 鏈式棧 括號匹配校驗 define success 0 define failure 1 typedef struct nodestnode def typedef struct linkstackstlinkstack def typedef voi...

資料結構之棧(2 1)應用 括號匹配

編寫乙個演算法,判斷鍵盤輸入的表示式是否配對。假設括號只包含 1 所謂括號配對,就是 2 輸入的字串中,可能包含 也可能沒有 數字,及其他符號。3 每當掃瞄字串元素 現 需要進行括號匹配檢查。檢查方式為 看最近出現的 而用什麼儲存 呢?棧是選擇之一。那棧的儲存狀態是,要麼有 要麼為空。4 根據以上分...

棧之應用 括號匹配

一 括號匹配的四種可能性 左右括號配對次序不正確 右括號多於左括號 左括號多於右括號 左右括號匹配正確 二 測試 char a abc 左右括號次序匹配不正確 char b abc 右括號多於左括號 char c abc 左括號多於右括號 char d abc 左右括號匹配正確 三 大概思路 1 判...