共享空間的棧

2022-07-16 17:45:13 字數 1329 閱讀 8115

當我們需要兩個棧的儲存資料的時候,可能會出現其中乙個棧不夠用,另外乙個棧又不經常使用的情況,可以試著把兩個棧合體。這是一種策略,在日常生活中也有類似的情況,比如情侶,有的情侶畢業了還是分開住,有的情侶可能會想一起租房子不是更好嘛,他好,我也好。

typedef int

elemtype;

typedef

struct

stack;

入棧

/*

*stacknum為棧的號數

*/int push( stack *s , elemtype e , int

stacknum )

if( stacknum == 1

)

else

return1;

}

出棧

int pop( stack *s , elemtype *e , int

stacknum )

else

if( stacknum == 2

)

return1;

}

遍歷

void display( stack *s )

printf(

"\n棧2: ");

for( i = size - 1 ; i >= s->top2 ; i--)

printf("\n

");}

全部**

#include#define size 20typedef 

intelemtype;

typedef

struct

stack;

void init( stack *s )

/**stacknum為棧的號數

*/int push( stack *s , elemtype e , int

stacknum )

if( stacknum == 1

)

else

return1;

}int pop( stack *s , elemtype *e , int

stacknum )

else

if( stacknum == 2

)

return1;

}void display( stack *s )

printf(

"\n棧2: ");

for( i = size - 1 ; i >= s->top2 ; i--)

printf("\n

");}int

main()

棧共享空間

兩棧共享空間的結構的 如下 typedef struct sqdoublestack 對於兩棧共享空間的push方法,我們除了要插入元素值共享引數外,還需要有乙個判斷是棧1還是棧2的棧號引數stacknumber,插入元素的 如下 插入元素e為新的棧頂元素 status push sqdoubles...

棧 兩棧共享空間

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

兩棧共享空間

include include include define ok 1 define error 0 define maxsize 20 typedef int selemtype typedef int status typedef struct sqdoublestack 雙頭棧的初始化 sta...