標頭檔案:
#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...