比起链表来,简单了很多,因为毕竟只能从头增删
运行良好
// 顺序栈.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream>
using namespace std;
class sstack
{
private:
int top;
int *m_elements;
int maxsize;
public:
sstack(int value);
~sstack();
bool isempty()const;
bool isfull()const;
void push(const int data);
void pop();
int Length();
int gettop();
void Show();
};
sstack::sstack(int value)
{
top=-1;
maxsize=value;
m_elements=new int[maxsize];
}
sstack::~sstack()
{
delete[]m_elements;
}
bool sstack::isempty()const
{
return top==-1;
}
bool sstack::isfull()const
{
return top==maxsize-1;
}
void sstack::push(const int data)
{
if(isfull())
{
cout<<"there is no position"<<endl;
}
top=top+1;
m_elements[top]=data;
}
void sstack::pop()
{
if(isempty())
{
cout<<"there is no data that you want throw"<<endl;
}
top=top-1;
return ;
}
int sstack::Length()
{
return top+1;
}
int sstack::gettop()
{
if(isempty())
{
cout<<"no data"<<endl;
}
return m_elements[top];
}
void sstack::Show()
{
for(int i=0;i<top;i++)
{
cout<<" "<<m_elements[i];
}
}
int main(int argc, char* argv[])
{
sstack stack=sstack(10);
int narray[10]={1,2,3,4,5,6,7,9,11};
for(int i=0;i<10;i++)
{
stack.push(narray[i]);
}
stack.pop();
stack.Show();
return 0;
}