順序棧
#include
using
namespace std;
//後進先出表 ——棧
//順序棧
#define maxsize 20
typedef
struct
sqstack;
//初始化棧
void
initsqstack
(sqstack*
& s)
//銷毀棧
void
destory
(sqstack*
& s)
//判斷棧是否為空
bool
stack_empty
(sqstack*
&s)//進棧
bool
push
(sqstack*
&s,int e)
//出棧
intpop
(sqstack*
& s,
int& e)
//取棧頂元素
bool
gettop
(sqstack*
&s,int
&e)int
main()
;int a[5]
=;initsqstack
(s);
for(
int i =
4; i >=
0; i--
)push
(s, a[i]);
while
(s->top !=-1
) cout <<
pop(s, e)
;return0;
}
鏈棧的實現
#include
using
namespace std;
//後進先出表 ——棧
//鏈棧
typedef
struct linknode
linkstack;
//初始化棧
void
initsqstack
(linkstack*
& s)
//銷毀棧
void
destory
(linkstack*
& s)
free
(p);
}//判斷棧是否為空
bool
stack_empty
(linkstack*
&s)//進棧
bool
push
(linkstack*
&s,int e)
//出棧
intpop
(linkstack*
& s,
int& e)
//取棧頂元素
bool
gettop
(linkstack*
&s,int
&e)int
main()
;int a[5]
=;initsqstack
(s);
for(
int i =
4; i >=
0; i--
)push
(s, a[i]);
while
(s->next!=
null
)//我的進棧元素是54321
cout <<
pop(s, e)
;//所以出棧的時候是12345
return0;
}
一道例題,經典的括號匹配問題,判斷輸入的是否是正確匹配
(( ))正確匹配
( ( ( ) )錯誤匹配
#include
using
namespace std;
//後進先出表 ——棧
//鏈棧
typedef
struct linknode
linkstack;
//初始化棧
void
initsqstack
(linkstack*
& s)
//銷毀棧
void
destory
(linkstack*
& s)
free
(p);
}//判斷棧是否為空
bool
stack_empty
(linkstack*
&s)//進棧
bool
push
(linkstack*
&s,int e)
//出棧
intpop
(linkstack*
& s,
int& e)
//取棧頂元素
bool
gettop
(linkstack*
&s,int
&e)int
main()
;initsqstack
(s);
for(i =
0; i <
6; i++
)else
flag =
false;}
}if(!
stack_empty
(s))
flag=
false
;destory
(s);
if(flag)
cout <<
"匹配成功"
;else
cout <<
"匹配失敗"
;return0;
}
基本資料結構 棧
基本資料結構 棧 一.線性資料結構 我們從四個簡單但重要的概念開始研究資料結構。棧,佇列,deques 雙向佇列 列表是一類資料的容器,它們資料元素之間的順序由新增或刪除的順序決定。一旦乙個資料元素被新增,它相對於前後元素一直保持該位置不變。諸如此類的資料結構被稱為線性資料結構。線性資料結構有兩端,...
基本資料結構 棧
我們從四個簡單但重要的概念開始研究資料結構。棧,佇列,deques 雙向佇列 列表是一類資料的容器,它們資料元素之間的順序由新增或刪除的順序決定。一旦乙個資料元素被新增,它相對於前後元素一直保持該位置不變。諸如此類的資料結構被稱為線性資料結構。線性資料結構有兩端,有時被稱為左右,某些情況被稱為前後。...
基本資料結構 棧
棧的特徵是後進先出 last in,first out,lifo 棧上的插入操作稱為壓入 push 刪除操作稱為彈出 pop 下面使用乙個陣列s n 來實現乙個最多容納n個元素的棧。定義乙個屬性指向最新插入的元素。棧的操作 如下 public class stack public stack int...