棧簡介:
棧是一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行資料插入和刪除操作的一段稱為棧頂,另一端稱為棧底。不含任何元素的棧稱為空棧,其特點為 先進後出。
棧功能:可以將資料從一種序列變為另一種序列
注:來自網路
//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 判...