6 7 在乙個陣列中實現兩個堆疊 20分

2021-10-18 16:35:05 字數 2463 閱讀 1285

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

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

思路上比較簡單即前後雙指標,向中間靠攏。

細節處理:

​ 一、是top1、top2的初始值。

​ 二、棧滿和棧空的條件

我第一遍寫時,順利通過,使用下面這種寫法,但是當我想嘗試一下top1=0,top2=maxsize-1和top1使用奇數字,top2使用偶數字時,怎麼都通不過,顯示超時,我吐了,估計是題目中沒有給出的printstack方法的問題。部落格最後補上printstack和getop方法,便於自己除錯驗證。

top1初始值為-1,top2初始值為maxsize。

ac的**:

stack createstack

(int maxsize )

bool push

( stack s, elementtype x,

int tag )

if(tag ==1)

else

return true;

}elementtype pop

( stack s,

int tag )

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

}else

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

}}

補充的**(取巧的**(手動滑稽)):

operation getop()

void

printstack

(stack s,

int tag)

}else

}printf

("\n");

}

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 在乙個陣列中實現兩個堆疊

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