題目:設計兩個棧 s1、s2 都採用順序棧方式,並且共享乙個儲存區[0,maxlen-1], 為了盡量利用空間,減少溢位的可能,可採用棧頂相向、迎面增長的儲存方式,如圖 2-1 所示。設計乙個有關棧的入棧和出棧演算法。
test.h
#include #include#include
typedef
struct
sequenstack;
typedef
intdatatype;
#define int1 "左端棧的棧頂元素是:%d,右端棧的棧頂元素是:%d\n"
#define int2 "%5d"
void initstack(sequenstack *s)
/*共享棧的初始化
*/int gettop(sequenstack s, datatype *e,int
flag)
/*取棧頂元素。將棧頂元素值返回給e,並返回1表示成功;否則返回0表示失敗。
*/
return1;
}int pushstack(sequenstack *s,datatype e,int
flag)
/*將元素e入共享棧。進棧成功返回1,否則返回0
*/
return
1; /*
返回1,進棧成功*/}
int popstack(sequenstack *s,datatype *e,int
flag)
return
1; /*
返回1,出棧操作成功*/}
int stackempty(sequenstack s,int
flag)
/*判斷棧是否為空。如果棧為空,返回1;否則,返回0。
*/
return0;
}
test.c
#include#include#define maxlen 15typedef
intdatatype;
#define int1 "左端棧的棧頂元素是:%d,右端棧的棧頂元素是:%d\n"
#define int2 "%5d"#include
"test.h"/*
包含共享棧的基本型別定義和基本操作實現
*/void
main()
; datatype b=;
datatype e1,e2;
initstack(&s); /*
初始化共享棧
*/for(i=0;i將陣列a中元素依次進左端棧
*/ }
for(i=0;i將陣列b中元素依次進右端棧
*/ }
if(gettop(s,&e1,1)==0
)
if(gettop(s,&e2,2)==0
)
printf(int1,e1,e2);
printf(
"左端棧的出棧的元素次序是:");
while(!stackempty(s,1)) /*
將左端棧元素出棧
*/ printf("\n
");printf(
"右端棧的出棧的元素次序是:");
while(!stackempty(s,2)) /*
將右端棧元素出棧
*/ printf("\n
");
}
資料結構實驗
資料結構實驗 寫乙個學生管理系統 如下 define overflow 1 define ok 1 define error 1 define maxsize 6 define increment 10 include include include include typedef int stat...
資料結構實驗
資料結構實驗 實驗一 順序表的實現及應用 實驗一 順序表的實現及應用 一 實驗實習目的及要求 了解和掌握線性表的順序儲存結構 掌握用c語言上機除錯線性表的基本方法 掌握線性表的基本操作 插入 刪除 查詢以及線性表合併等運算在順序儲存結構和鏈結儲存結構上的運算,以及對相應演算法的效能分析。二 實驗實習...
資料結構(4)
1 允許進行插入 刪除操作的一端叫棧頂 2 表的另一端叫棧底 3 當棧中沒有資料元素時稱為空棧 4 插入叫進棧或入棧 5 刪除叫退棧或出棧 特點 後進先出 順序棧typedef struct sqstack 初始化棧 void initstack sqstack s s為棧指標,top為s所指棧的棧...