資料結構 堆疊佇列 在乙個陣列中實現兩個堆疊

2021-09-12 15:15:11 字數 1871 閱讀 6234

6-3 在乙個陣列中實現兩個堆疊 (20 分)

時間限制: 400 ms       記憶體限制: 64 mb          **長度限制: 16 kb

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

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

}return 0;

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

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

stack createstack( int maxsize )

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

if(1 == tag)

else if (2 == tag)

return false;

}elementtype pop( stack s, int tag )

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

}else if(2 == tag)

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

}return error;

}

資料結構 乙個陣列實現兩個堆疊

1 如何判斷棧滿?棧滿的判斷可以根據兩個棧頂之間的距離來判斷,當棧滿時必然存在top2 top1 1。int isfull stack s 2 從陣列頂端壓棧,棧頂是減1 從陣列底部壓棧,棧頂是加1 3 從陣列頂端出棧,棧頂是加1 從陣列底部出棧,棧頂是減1 c語言實現 include includ...

資料結構之棧(1 2) 在乙個陣列中實現兩個堆疊

本題要求在乙個陣列中實現兩個堆疊。函式介面定義 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 ...