定義●只允許在一端插入和刪除的線性表;
●允許插入和刪除的一端稱為棧頂
(top)
,另一端稱為棧底
(bottom)。
特點後進先出
(lifo)
棧的棧的主要操作
棧的主要操作主要操作
棧的主要操作:
adtstack
棧的陣列表示 — 順序棧
#define
stacksize
100typedef
char
stackdata
;typedef
struct
seqstack
;操作:
intstackempty (seqstack*s)
intstackfull(seqstack*s)
void initstack ( seqstack*s)
int push (seqstack *s, stackdata x)
int gettop (seqstack *s, stackdata&x)
int
pop (seqstack *s, stackdata&x)
鏈式棧無棧滿問題,空間可擴充插入與刪除僅在棧頂處執行鏈式棧的棧頂在鏈頭適合於多棧操作
typedef
intstackdata;
typedef
struct
node
stacknode;
typedef
struct
linkstack;
voidinitstack ( linkstack *s )
intpush ( linkstack *s, stackdata x )
intstackempty
(linkstack
*s)
intpop (
linkstack
*s,
stackdata
&x )
int gettop ( linkstack *s, stackdata &x ) 定義
佇列是只允許在一端刪除,在另一端插入的線性表
允許刪除的一端叫做隊頭
(front)
,允許插入的一端叫做隊尾
(rear)。特性
先進先出
(fifo,first in first out)
adtqueue
#define
queuesize50;
typedef
intqueuedata;
typedef
struct
seqqueue;
void
initqueue
( seqqueue
*q )
n進隊時隊尾指標先進一 rear= rear + 1,再將新元素按rear 指示位置加入。
n出隊時隊頭指標先進一front= front + 1,再將下標為front的元素取出。
n隊滿時再進隊將溢位出錯;
n隊空時再出隊將隊空處理。
解決辦法之一:將佇列元素存放陣列首尾相接,形成迴圈(環形)佇列
佇列存放陣列被當作首尾相接的表處理。
隊頭、隊尾指標加1時從
queuesize
-1直接進到
0,可用語言的取模(餘數
)運算實現。
隊頭指標進
1:front = (front+1) %
queuesize
;隊尾指標進
1:
rear = (rear+1) %
queuesize
;佇列初始化:
front
= rear
= 0;
隊空條件:
front
==rear
;隊滿條件:
(rear+1) %
queuesize
==front
迴圈佇列操作的實現
void initqueue ( seqqueue *q )
int queueempty ( seqqueue *q )
int queuefull ( seqqueue *q )
intenqueue( seqqueue*q, queuedatax )
intdequeue ( seqqueue*q, queuedata&x )
intgetfront
( seqqueue
*q,
queuedata
&x )
typedef
intqueuedata
;typedef
struct
node
queuenode
;typedef
struct
linkqueue
;void
initqueue
( linkqueue
*q )
intqueueempty
( linkqueue
*q )
intgetfront
( linkqueue
*q,
queuedata
&x )
intenqueue
(linkqueue
*q,queuedata
x )
intdequeue
( linkqueue
*q,
queuedata
&x)
資料結構 2
2016 02 06 17 38 指標和陣列 指標和一維陣列 陣列名一維陣列名是個指標常量,它存放的是一維陣列第乙個元素的位址,它的值不能被改變 一維陣列名指向的是陣列的第乙個元素 下標和指標的關係 a i a i 假設指標變數的名字為p 則p i的值是p i p所指向的變數所佔的位元組數 指標變數...
資料結構 2
class queue object 佇列 雙端佇列 def init self 私有化,封裝 self.queue def enqueue self item 從尾部往佇列中新增乙個元素 def enqueue start self item 從頭部新增元素 雙 self.queue.insert...
資料結構 2
class circularqueue print enqueue item else return null dequeue function linkedlist this head head this size length 增加元素 this add function ele current...