6 2 另類堆疊 (15 分

2021-09-18 07:34:26 字數 1436 閱讀 5746

在棧的順序儲存實現中,另有一種方法是將top定義為棧頂的上乙個位置。請編寫程式實現這種定義下堆疊的入棧、出棧操作。如何判斷堆疊為空或者滿?

函式介面定義:

bool push( stack s, elementtype x );

elementtype pop( stack s );

其中stack結構定義如下:

typedef int position;

typedef struct snode *ptrtosnode;

struct snode ;

typedef ptrtosnode stack;

注意:如果堆疊已滿,push函式必須輸出「stack full」並且返回false;如果佇列是空的,則pop函式必須輸出「stack empty」,並且返回error。

裁判測試程式樣例:

#include

#include

#define error -1

typedef int elementtype;

typedef enum operation;

typedef enum bool;

typedef int position;

typedef struct snode *ptrtosnode;

struct snode ;

typedef ptrtosnode stack;

stack createstack( int maxsize )

bool push( stack s, elementtype x );

elementtype pop( stack s );

operation getop(); /* 裁判實現,細節不表 /

void printstack( stack s ); / 裁判實現,細節不表 */

int main()

}return 0;/* 你的**將被嵌在這裡 */

輸入樣例:

4pop

push 5

push 4

push 3

poppop

push 2

push 1

push 0

push 10

end輸出樣例:

stack empty

3 is out

4 is out

stack full

0 1 2 5

bool push( stack s, elementtype x )

else

}elementtype pop( stack s )

else return s->data[--(s->top)];

}

另類堆疊 15分

在棧的順序儲存實現中,另有一種方法是將top定義為棧頂的上乙個位置。請編寫程式實現這種定義下堆疊的入棧 出棧操作。如何判斷堆疊為空或者滿?函式介面定義 bool push stack s,elementtype x elementtype pop stack s 其中stack結構定義如下 type...

習題3 14 另類堆疊 15分

bool push stack s,elementtype x elementtype pop stack s typedef int position typedef struct snode ptrtosnode struct snode typedef ptrtosnode stack 注意 ...

另類堆疊 (20 分)

在棧的順序儲存實現中,另有一種方法是將top定義為棧頂的上乙個位置。請編寫程式實現這種定義下堆疊的入棧 出棧操作。如何判斷堆疊為空或者滿?bool push stack s,elementtype x elementtype pop stack s 其中stack結構定義如下 typedef int...