int Get Top( LinkStack*S, Stack Data &x)t if( Stack Empty(S)) return 0; x-S->top-> data return 1
int GetTop ( LinkStack *S, StackData &x ) { if ( StackEmpty (S) ) return 0; x = S->top->data; return 1; }
队列( Queue) 0u1 n-1 fro ont real 定义 ◆队列是只允许在一端删除,在另一端插 入的线性表 ◆允许删除的一端叫做队头(fron),允许 插入的一端叫做队尾(rear) 特性 ◆先进先出(FIFO, First In First Out)
◼ 定义 ◆ 队列是只允许在一端删除,在另一端插 入的线性表 ◆ 允许删除的一端叫做队头(front),允许 插入的一端叫做队尾(rear)。 ◼ 特性 ◆ 先进先出(FIFO, First In First Out) a0 a1 a2 an-1 front rear 队列 ( Queue )
队列的主要操作 ADT Queue i /对象由数据类型为 QueueData的元素构成 int EnQueue( Queue*Q, QueueData X);/进队 int DeQueue( Queue*Q, QueueData&x;:/H出队 int Getfront( Queue*Q, QueueData&x):/取队头 void InitQueue( Queue*Q;/置空队 int QueueEmpty(Quee*Q;判队空否 int QueueFul( Queue*Q;/判队满否
ADT Queue { //对象:由数据类型为QueueData的元素构成 int EnQueue (Queue *Q, QueueData x); //进队 int DeQueue (Queue *Q, QueueData &x);//出队 int GetFront (Queue *Q, QueueData &x);//取队头 void InitQueue (Queue *Q); //置空队 int QueueEmpty (Queue *Q); //判队空否 int QueueFull (Queue *Q); //判队满否 } 队列的主要操作
队列的顺序存储表示一顺序队列 #define QueueSize 50: typedef int QueueData typedef struct t QueueData data QueueSize int rear. fre > ront 3 Seq Queue void InitQueue( Seq Queue *Q)( Q->front=Q->rear=-1;
#define QueueSize 50; typedef int QueueData; typedef struct { QueueData data[QueueSize]; int rear, front; } SeqQueue; void InitQueue ( SeqQueue *Q ) { Q->front = Q->rear = -1; } 队列的顺序存储表示 — 顺序队列
队列的进队和出队 A ront rear空队列 front rear A进队 AB ABICID front rear B进队 front rear C,D进队 BC front rear A退队 front rear B退队 front rear E,G进队ormE|FG CIDEF G ar洗队溘出
队列的进队和出队 front rear 空队列 front rear A进队 A front rear B进队 A B front rear C, D进队 A B C D front rear A退队 B C D front rear B退队 C D front rear E,F,G进队 C D E F G C D E F G front rear H进队,溢出