(資料結構)棧操作表示

2021-10-04 20:59:05 字數 3339 閱讀 4284

標頭檔案:

#include

#include

#define stack_init_size 100

//儲存空間初始分配量

#define stackincrement 10

//儲存空間分配增量

typedef

int selemtype;

typedef

int status;

typedef

struct

sqstack;

status initstack

(sqstack &s)

;//構造乙個空棧

status destroystack

(sqstack &s)

;//銷毀棧

status clearstack

(sqstack &s)

;//清空棧

status stackempty

(sqstack s)

;//判斷是否為空棧

status issqstackfull

(sqstack &s)

;//判斷是否為滿

status stacklength

(sqstack s)

;//返回棧元素的元素個數

status gettop

(sqstack &s,selemtype &e)

;//若棧不為空,則用e返回棧頂元素,並返回ok;否則返回error

status push

(sqstack &s,selemtype e)

;//插入元素e為新的棧頂元素

status pop

(sqstack &s,selemtype &e)

;//若棧不為空,則刪除棧頂元素,用e返回其值,並返回ok;否則返回error

status printsqstack

(sqstack &s)

;//輸出棧元素

//構造乙個空棧

status initstack

(sqstack &s)

s.top=s.base;

//分配後為空棧的標誌

s.stacksize=stack_init_size;

cout<<

"初始化完成!"

<

return1;

}//銷毀棧

status destroystack

(sqstack &s)

free

(s.base)

; s.base=

null

; s.top=

null

; s.stacksize=0;

cout<<

"棧已銷毀!"

<

return1;

}//清空棧

status clearstack

(sqstack &s)

s.top=s.base;

s.stacksize=0;

return1;

}//判斷是否為空棧

status stackempty

(sqstack s)

if(s.base==s.top)

return1;

}//返回棧元素的元素個數

status stacklength

(sqstack s)

int i=0;

while

(s.base<=s.top-1)

cout<<

"棧元素個數為:"

<

return1;

}//若棧不為空,則用e返回棧頂元素,並返回ok;否則返回error

status gettop

(sqstack &s,selemtype &e)

e=*(s.top-1)

; cout<<

"棧頂元素為:"

<

return1;

}//棧是否為空

status issqstackempty

(sqstack &s)

else

}//棧是否已滿!

status issqstackfull

(sqstack &s)

else

}//插入元素e為新的棧頂元素

status push

(sqstack &s,selemtype e)

s.top=s.base+s.stacksize;

s.stacksize+

=stackincrement;

//增加儲存容量

}*s.top++

=e;/*

s.base[s.top]=e;

s.top=s.top+1;

*/return1;

}//若棧不為空,則刪除棧頂元素,用e返回其值,並返回ok;否則返回error

status pop

(sqstack &s,selemtype &e)

e=*(s.top-1)

; s.top=s.top-1;

//e=*--s.top;

cout<

return1;

}/*status getsqstacktop(sqstack &s,elementtype &e)

else

return 0;

} */

//輸出棧元素

status printsqstack

(sqstack &s)

cout<

return1;

}

原始檔:

#include

"stack.h"

void

main()

printsqstack

(s);

//輸出棧元素

stackempty

(s);

//判斷是否為空

stacklength

(s);

//長度

cout<<

"棧頂元素為:"

;pop

(s,e)

;issqstackfull

(s);

//判斷是否滿

clearstack

(s);

//清空

stackempty

(s);

//判斷是否為空

destroystack

(s);

//銷毀

}

執行結果:

資料結構 棧的陣列表示

棧 棧 stack 又名堆疊,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素。從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成...

資料結構 棧的操作

include include define maxsize 100 設順序表的最大長度為100,可依具體情況分配空間 define null 1 typedef int datatype typedef struct datatype stack maxsize int top 棧頂指標 seqs...

資料結構 鏈式棧的表示和實現

鏈式棧的表示和實現 鏈式棧 採用鏈式的儲存結構實現的棧 通常使用單鏈表的形式 2019.04.15 include include include using namespace std define ok 1 define error 0 define overflow 1 typedef int...