顺序栈的基本操作
void InitStack(sqStack &s);
bool EmptyStack(sqStack s);
bool Push(sqStack &s,int a);
bool Pop(sqStack &s);
int Top(sqStack s);
void display(sqStack s);
结构体定义
typedef struct
{
int data[MaxSize];
int top;
}sqStack;
运行代码
#include "stdafx.h"
#include<iostream>
using namespace std;
#define MaxSize 20
typedef struct
{
int data[MaxSize];
int top;
}sqStack;
void InitStack(sqStack &s);
bool EmptyStack(sqStack s);
bool Push(sqStack &s,int a);
bool Pop(sqStack &s);
int Top(sqStack s);
void display(sqStack s);
int _tmain(int argc, _TCHAR* argv[])
{
sqStack s;
InitStack(s);
Push(s,1);
Push(s,2);
Push(s,3);
display(s);
Pop(s);
system("pause");
return 0;
}
void InitStack(sqStack &s)
{
s.top=-1;
}
bool EmptyStack(sqStack s)
{
return s.top==-1?true:false;
}
bool Push(sqStack &s,int a)
{
if(s.top==MaxSize-1)
{
cout<<"栈满"<<endl;
return false;
}
s.data[++s.top]=a;
return true;
}
bool Pop(sqStack &s)
{
if(s.top==-1)
{
cout<<"栈空"<<endl;
return false;
}
cout<<s.data[s.top--]<<"出栈后"<<endl;
if(s.top!=-1)
{
display(s);
}
return true;
}
int Top(sqStack s)
{
if(s.top==-1)
{
cout<<"栈空"<<endl;
return 0;
}
return s.data[s.top];
}
void display(sqStack s)
{
cout<<"栈内元素:";
int j = Top(s);
while(s.top!=-1)
cout<<s.data[s.top--]<<" ";
cout<<",此时栈顶元素:"<<j;
cout<<endl<<endl;
}