本題要求在乙個陣列中實現兩個堆疊。
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
這道題略有點坑,題目中的輸出格式如下
沒有提及輸出換行符,然而輸出樣例中是有的,細節還是需要注意一下....push
函式必須輸出「stack full」並且返回false;如果某堆疊是空的,則pop
函式必須輸出「stack tag empty」(其中tag是該堆疊的編號),並且返回error。
大體思路就是用陣列的兩端分別作為兩個棧的棧底,兩個棧頂指標分別為 top1,top2; 判空條件分別為 top1 == -1,
top2 == maxsize;然後棧滿條件為 top2 - top1 == 1;以小端為底的棧出入棧操作和普通的棧相同,以大端為底的棧正好和普通的棧相反;
**如下:
stack createstack( int maxsize )
bool push( stack s,elementtype x,int tag)
if(tag == 1)else
return true;
}elementtype pop( stack s, int tag )else
}elseelse
}}
6 7 在乙個陣列中實現兩個堆疊
6 7 在乙個陣列中實現兩個堆疊 20 分 本題要求在乙個陣列中實現兩個堆疊。stack createstack int maxsize bool push stack s,elementtype x,int tag elementtype pop stack s,int tag 其中tag是堆疊編...
6 7 在乙個陣列中實現兩個堆疊 20分
本題要求在乙個陣列中實現兩個堆疊。函式介面定義 stack createstack int maxsize bool push stack s,elementtype x,int tag elementtype pop stack s,int tag 其中tag是堆疊編號,取1或2 maxsize堆...
6 7 在乙個陣列中實現兩個堆疊 20分
本題要求在乙個陣列中實現兩個堆疊。函式介面定義 stack createstack int maxsize bool push stack s,elementtype x,int tag elementtype pop stack s,int tag 其中tag是堆疊編號,取1或2 maxsize堆...