資料結構2

2021-08-04 03:56:47 字數 2756 閱讀 8172

定義●只允許在一端插入和刪除的線性表;

●允許插入和刪除的一端稱為棧頂

(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...