码迷,mamicode.com
首页 > 编程语言 > 详细

(001)顺序栈的C++实现

时间:2014-12-04 23:17:53      阅读:385      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   os   sp   for   on   文件   div   

(001)顺序栈的C++实现
                                                           2014/12/4     jxlijunhao
这里通过C++模板类来实现一个顺序栈:
 1)初始化
 2)入栈
 3)出栈
 4)取栈顶元素

在顺序栈中(一个数组中),操作的总是发生在数组的末尾


定义一个头文件
#ifndef SQ_STACK_H
#define SQ_STACK_H

#include<iostream>
using namespace std;

template<class T>
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<class T>
sq_stack<T>::sq_stack(int m)
{
	cap=m;
	s=new T[cap];
	top=0;
}


//打印
template<class T>
void sq_stack<T>::print_sq_stack()
{
	int i;
	for (i=top;i>0;i--)
	{
		cout<<s[i-1]<<" ";
	}
	cout<<endl;
}

//检查顺序栈的状态
template<class T>
int sq_stack<T>::flag_sq_stack()
{
	if (top==cap) return -1; //栈满
	if (top==0) return 0;    //栈空
	return 1;	
}

//入栈
template<class T>
void sq_stack<T>::push_sq_stack(T t)
{
	if (top==cap)
	{
		cout<<"stack overflow"<<endl;
		return;
	}
	top=top+1;
	s[top-1]=t;
}
//出栈
template<class T>
T sq_stack<T>::delete_sq_stack()
{
	T y;
	if (top==0)
	{
		cout<<"空栈"<<endl;
		return 0;
	}
	y=s[top-1];
	top=top-1;
	return y;
	
}
template<class T>
T sq_stack<T>::read_sq_stack()
{
	if (top==0)
	{
		cout<<"空栈"<<endl;
		return 0;
	}
	return s[top-1];
}

#endif
#include "sq_stack.h"
int main()
{
	sq_stack<int>s(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<<s.delete_sq_stack()<<endl;
}



(001)顺序栈的C++实现

标签:style   blog   io   os   sp   for   on   文件   div   

原文地址:http://blog.csdn.net/jxlijunhao/article/details/41731885

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!