棧和佇列2 兩棧共用空間

2021-10-08 21:55:13 字數 1147 閱讀 2835

兩棧共用空間是為了解決順序棧未滿時只能利用部分空間的現象,讓兩個棧分別以陣列頭部和尾部作為棧底,向中間延伸,直到在中間相遇,即相當於兩個棧都滿了

事實上和順序棧沒什麼兩樣,不過是要新增乙個函式引數用於識別在哪個棧進行操作

和順序棧一樣,為了在函式中修改結構體內容,函式引數為結構體指標

typedef

struct doublestack

doublestack;

void

initial

(doublestack *d)

入棧

void

push

(doublestack *d,

int data,

int stackname)

else

}else

}

出棧

int

pop(doublestack *d,

int stackname)

else}if

(stackname==2)

else

}return ret;

}

得到棧頂

int

gettop

(doublestack *d,

int stackname)

else

return ret;

}

int

main()

push

(&d,

114514,1

);push

(&d,

1919810,2

);cout<<

gettop

(&d,1)

<<

' ';

cout<<

gettop

(&d,2)

int i=

1;i<=

101;i++

) cout

int i=

1;i<=

100;i++

)return0;

}

棧和佇列 2鏈棧

adrian 鏈棧元素入棧 例如,將元素 1 2 3 4 依次入棧,等價於將各元素採用頭插法依次新增到鍊錶中,每個資料元素的新增過程如圖 2 所示 鏈棧元素出棧 例如,圖 2e 所示的鏈棧中,若要將元素 3 出棧,根據 先進後出 的原則,要先將元素 4 出棧,也就是從鍊錶中摘除,然後元素 3 才能出...

棧和佇列 2

佇列 佇列比棧稍微複雜一點,特別是順序儲存結構中,有乙個rear,乙個front,要把他倆連起來,挺麻煩的,還有假溢位問題,隊空隊滿的討論都是比較難的地方,需要仔細推敲。一 基本知識 佇列 只允許在一端進行插入操作,而另一端進行刪除操作的線性表。允許插入 也稱入隊 進隊 的一端稱為隊尾,允許刪除 也...

棧 兩棧共享空間

對於乙個棧,我們只能盡量考慮周全,設計出合適大小的陣列處理。但是,對於兩個相同型別的棧,我們卻可以做到最大限度地利用其事先開闢的儲存空間進行操作。我們可以用乙個陣列來儲存兩個棧,只不過需要一點小技巧。陣列有兩個端點,兩個棧有兩個棧底,讓乙個棧的棧底為陣列的始端,即下標為0處。另乙個棧的棧底為陣列的末...