PTA 在乙個陣列中實現兩個堆疊

2021-08-20 22:25:34 字數 2170 閱讀 7017

本題要求在乙個陣列中實現兩個堆疊。

函式介面定義:

stack createstack( int maxsize );

bool push( stack s, elementtype x, int tag );

elementtype pop( stack s, int tag );

其中tag是堆疊編號,取1或2;maxsize堆疊陣列的規模;stack結構定義如下:

typedef

int position;

struct snode ;

typedef

struct snode *stack;

注意:如果堆疊已滿,push函式必須輸出「stack full」並且返回false;如果某堆疊是空的,則pop函式必須輸出「stack tag empty」(其中tag是該堆疊的編號),並且返回error。

裁判測試程式樣例:

#include 

#include

#define error 1e8

typedef

int elementtype;

typedef

enum operation;

typedef

enum bool;

typedef

int position;

struct snode ;

typedef

struct snode *stack;

stack createstack( int maxsize );

bool push( stack s, elementtype x, int tag );

elementtype pop( stack s, int tag );

operation getop(); /* details omitted */

void printstack( stack s, int tag ); /* details omitted */

int main()

}return0;}

/* 你的**將被嵌在這裡 */

輸入樣例:

5

push 1 1

pop 2

push 2 11

push 1 2

push 2 12

pop 1

push 2 13

push 2 14

push 1 3

pop 2

end

輸出樣例:

stack 2 empty

stack 2 is empty!

stack full

stack 1 is full!

pop from stack 1: 1

pop from stack 2: 13 12 11

code:

stack

createstack( int maxsize )

bool

push( stack

s, elementtype

x, int tag )

if(tag == 1)

else

}elementtype

pop( stack

s, int tag )

int x;

if(tag == 1)

else

return x;

}

這裡給出裁判實現的**:

(可以把這段**放到本地去執行):

operation getop()

else

if(!strcmp(str, "pop"))

else

if(!strcmp(str, "end"))

}void printstack( stack s, int tag )

}else

}printf("\n");

}

PTA 在乙個陣列中實現兩個堆疊

本題要求在乙個陣列中實現兩個堆疊。stack createstack int maxsize bool push stack s,elementtype x,int tag elementtype pop stack s,int tag 其中tag是堆疊編號,取1或2 maxsize堆疊陣列的規模 ...

在乙個陣列中實現兩個堆疊

初學者難題 1.如何建立這樣的乙個陣列?2.怎樣判斷棧的空滿?include include define error 1e8 typedef int elementtype typedef enum operation typedef enum bool typedef int position ...

堆疊 乙個陣列實現兩個堆疊

分析 一種聰明的辦法是使這兩個棧分別從陣列的兩頭向中間生長,當兩個指標相遇時,表時兩個棧都滿了。define maxsize 100 define elementtype int typedef struct strck,s s.top1 1 s.top2 maxsize 新增乙個元素 void p...