(001)順序棧的C++實現
(001)順序棧的C++實現
2014/12/4 jxlijunhao
這裡通過C++模板類來實現一個順序棧:
1)初始化
2)入棧
3)出棧
4)取棧頂元素
在順序棧中(一個數組中),操作的總是發生在數組的末尾
定義一個頭文件
#ifndef SQ_STACK_H
#define SQ_STACK_H
#include
using namespace std;
template
class sq_stack
{
private:
int cap; //總容量
int top; //棧頂
T *s; //指向順序棧(棧底)
public:
sq_stack(int); //初始化
void print_sq_stack();//打印
int flag_sq_stack(); //檢查順序棧的狀態
void push_sq_stack(T);//入棧
T delete_sq_stack(); //出棧
T read_sq_stack(); //讀棧頂元素
};
//初始化
template
sq_stack::sq_stack(int m)
{
cap=m;
s=new T[cap];
top=0;
}
//打印
template
void sq_stack::print_sq_stack()
{
int i;
for (i=top;i>0;i--)
{
cout<
int sq_stack::flag_sq_stack()
{
if (top==cap) return -1; //棧滿
if (top==0) return 0; //棧空
return 1;
}
//入棧
template
void sq_stack::push_sq_stack(T t)
{
if (top==cap)
{
cout<<"stack overflow"<
T sq_stack::delete_sq_stack()
{
T y;
if (top==0)
{
cout<<"空棧"<
T sq_stack::read_sq_stack()
{
if (top==0)
{
cout<<"空棧"<#include "sq_stack.h"
int main()
{
sq_stacks(10);
s.push_sq_stack(50);
s.push_sq_stack(60);
s.push_sq_stack(70);
s.push_sq_stack(80);
s.push_sq_stack(90);
s.push_sq_stack(100);
s.print_sq_stack();
cout<