6 3 在乙個陣列中實現兩個堆疊 22分

2021-10-04 22:22:24 字數 2495 閱讀 4042

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

函式介面定義:

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 */

intmain()

}return0;

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

輸入樣例:

5

push 1

1pop 2

push 2

11push 1

2push 2

12pop 1

push 2

13push 2

14push 1

3pop 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

1211

程式**如下:

stack createstack

(int maxsize)

bool push

(stack s, elementtype x,

int tag)

else

}elementtype pop

(stack s,

int tag)

else

return s->data[s->top1--];

}else

if(tag ==2)

else

return s->data[s->top2++];

}}

ps:在本題中,top1和top2的位置是不可互換的,也就是說不能寫成下面的形式

s->top1=maxsize;

s->top2=-1

;

否則會出現執行超時的報錯資訊。

原因是在裁判程式中

printstack

(s,1);

printstack

(s,2

);

列印是從小到大,預設

s->top1 =-1

; s->top2 = 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...

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

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