/*棧:
**也可以看作線性表,其特殊行在於
**棧是線性表操作的子集,是操作受限的線性表
**因此,可稱為限定性的資料結構
**一般來說,在初始化設空棧時不應該限定棧的最大容量
**先為棧分配乙個基本容量,不夠用時再逐段擴大
**當 base = null 時,表明棧結構不存在
** base = top 時,表明棧空
*/#include
#define true 1
#define false 0
#define ok 1
#define error 0
#define overflow -1
#define infeasible -2
#define init_stack_size 100
#define increamentstack 10
typedef int selemtype;
typedef int status;
typedef structsqstack;
//構造乙個空棧
status initstack( sqstack &s )
// 把 s 設定為空棧
status clearstack( sqstack &s )
free(q);
return ok;
}//銷毀 s
status destroystack( sqstack &s )
//若棧 s 為空棧,則返回true, 否則返回 false
status stackempty( sqstack s )
//返回 s 的元素個數,即棧的長度
int stacklength( sqstack s )
//若棧不空,則用 e 返回 s 的棧頂元素,並返回 ok, 否則返回error
status gettop( sqstack s, selemtype &e )
else
return error;
}//若棧不空,則刪除 s 的棧頂元素,用 e 返回其值,並返回 ok;否則返回 error
status pop( sqstack &s, selemtype &e )
else
return error;
}//插入元素 e 為新的棧頂元素
status push( sqstack &s, selemtype e )
*s.top = e;
s.top++;
return ok;
}
順序棧的實現
#include
#include "stack.h"
int main(void)
putchar('\n');
//return
length of stack s
printf("s.length = %d\n",stacklength(s));
//get the top element from s
selemtype get_e;
gettop(s,get_e);
printf("the top element is %d\n",get_e);
//pop the top element
selemtype pop_e;
pop(s,pop_e);
printf("pop element is %d\n",pop_e);
//check the s
for( int i = 0; i < stacklength(s); ++i )
return
0;}
哎呀。。。最近懶了好多,要好好反省一下。 順序棧的實現與解析
順序棧,即棧的順序儲存結構利用一組位址連續的儲存單元依次存放自棧低到棧頂的資料元素,同時附設指標top指向棧頂元素在順序棧中的位置。棧的特性,先進後出,後進先出,推薦可以看一看電影盜夢空間,跟函式的呼叫順序有關係 表示棧的線性表的表尾端 表示棧的線性表的表頭端 1.進棧 2.退棧 3.得到棧頂元素 ...
順序棧的表示與實現
說明 想要使用順序表實現棧,結構體中應包含棧頂和棧底的指標,同時需要指定棧的儲存單元大小 動態可變 其中棧底指標base用來動態分配棧的記憶體空間,棧頂指標top用來指定棧頂元素在順序棧中的位置。初始化時top bas etop base top ba se,表示棧中無元素,而後每壓入乙個新的元素,...
順序棧的實現
棧是一種限定只在表尾進行插入或刪除操作,棧也是線性表 表頭稱為棧的底部,表尾稱為棧的頂部,表為空稱為空棧,棧又 稱為後進先出的線性表,棧也有兩種表示 順序棧與鏈式棧 順序棧是利用一組位址連續的儲存單元,依次存放從棧底到棧頂 的資料元素,附設乙個指標指示棧頂的元素在棧中的位置.ifndef stack...