標頭檔案:函式的定義
#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處。另乙個棧的棧底為陣列的末...