前言:
本節為棧的應用舉例,只包括**實現部分
目錄:2.棧的應用舉例
進製轉換:
括號匹配:
正文:進製轉換實現**:
注意:此函式要和上一節,棧的實現**放在一起
//進製轉換
void
conversion()
printf("%s
","轉換8進製後為:");
while(s.base!=s.top)
}
括號匹配**實現:
匹配**在 charmatch(char *pc) 函式內實現,其他部分都是棧的基本操作。
#include#include#include
#define true 1
#define false 0
#define ok 1
#define error 0
#define infeasible -1
#define overflow -2
#define stack_init_size 100
#define stackincrement 10
//status是函式的型別,其值是函式結果狀態碼
typedef int
status;
//typedef int selemtype;
typedef char
selemtype;
typedef
struct
sqstack;
//構造空棧
status initstack(sqstack &s)
//插入元素 (入棧)
status push(sqstack &s,selemtype e)
*s.top++=e;
return
ok;}
//刪除元素(出棧)
status pop(sqstack &s,selemtype &e)
else
return
ok;}
void printallvalues(sqstack &s)
printf(
"base:%p\n
",s.base);}
//gettop獲取棧頂元素
selemtype gettop(sqstack &s)
return *(s.top-1);}
//進製轉換
void
conversion()
printf("%s
","轉換8進製後為:");
while(s.base!=s.top)}//
括號匹配 包括:{} ()
void charmatch(char *pc)
')||(top=='
('&&d==')'
))else
}if(s.base!=s.top)
else
}void
main()(])";
charmatch(c);
}
第三章 棧和佇列
棧和佇列 一 棧 1 棧的定義 棧是限定僅在表尾進行插入和刪除操作的線性表,允許插入和刪除的一端稱為棧頂,另一端稱為棧底,不含任何資料元素的棧稱為空棧。2 在任何時候出棧的元素都只能是棧頂元素,即最後最後入棧者最先出棧。所以棧中元素除了具有線性關係外,還具有後進先出的特性。3 棧的抽象資料型別定義 ...
第三章 棧和佇列
棧和佇列是兩種常用的資料結構,同時又是操作受限的線性表,也是兩種重要的抽象資料型別。1 1棧是限定僅在表尾進行插入和刪除操作的線性表。棧中元素具有線性關係和後進先出的特性。2雖然對插入和刪除操作的位置限制減少了棧的靈活性,但同時也使得棧的操作更有效更容易實現。3棧的儲存結構分兩種,一種是順序儲存結構...
第三章 棧和佇列
第三章棧和佇列 一 棧1.棧 限定僅在表尾進行插入和刪除操作的線性表 允許插入和刪除的一端稱為棧頂 另一端稱為棧底 2.空棧 不含任何資料元素的棧。3.在任何時候出棧的元素都只能是棧頂元素,即最後入棧者最先出棧,具有後進先出的特性。4.棧的抽象資料型別定義 1 push 輸入 元素值 x 輸出 如果...