共享棧問題

2021-06-28 15:42:14 字數 1366 閱讀 6781

標頭檔案:函式的定義

#include #include #include #define stacksize 100

typedef int elemtype;

typedef struct

sseqstack;

void initstack(sseqstack *s);//初始換棧

int stackempty(sseqstack s,int flag);//判斷棧是否為空

int gettop(sseqstack s,elemtype *e,int flag);//取棧頂元素

int pushstack(sseqstack *s,elemtype e,int flag);//入棧

int popstack(sseqstack *s,elemtype *e,int flag);//出棧

int stacklength(sseqstack s,int flag);//求棧長度

void clearstack(sseqstack *s);//清空棧

函式的定義

#include "共享棧.h"

void initstack(sseqstack *s)//初始換棧

int stackempty(sseqstack s,int flag)//判斷棧是否為空

break;

case 1:

if(s.top[1] == stacksize-1)

break;

default:

return 0;

} return 0;

}int gettop(sseqstack s,elemtype *e,int flag)//取棧頂元素

*e = s.stack[s.top[0]-1];

break;

case 1:

if(s.top[1] == stacksize-1)

*e = s.stack[s.top[1]+1];

break;

default:

return 0;

} return 1;

}int pushstack(sseqstack *s,elemtype e,int flag)//入棧

switch(flag)

return 1;

}int popstack(sseqstack *s,elemtype *e,int flag)//出棧

switch(flag)

return 1;

}int stacklength(sseqstack s)//求棧長度

void clearstack(sseqstack *s)//清空棧

棧 棧 鏈式棧,順序棧,共享棧

棧也是一種線性表結構,只不過棧的操作是受限的,它的特點就是在棧頂方向新增新的元素,且刪除元素也只能從棧頂方向刪除。因此棧是一種lifo 後進先出 特性的資料結構。壓棧 新的元素放入棧的操作。出棧 從棧中移除乙個元素的操作。因為棧是一種線性結構,所以可以通過前面所學的鍊錶和順序表作為內部實現。我們可以...

棧共享空間

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

棧 兩棧共享空間

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