堆的基本实现

    今天讲栈,栈的基本操作是入栈和出栈,栈的特点是先进后出。同时在进栈的时候注意栈是否是满的,出栈的时候注意栈是否是空的。

    直接上代码:

    

栈的类实现:
//使用类模板来实现

template <class T>
class stack
{
public:
	stack(int size);
	~stack();
	void pop();
	void push(T &a);
	bool isEmpty();
	bool isFull();
	void print(int index);
private:
	int top;
	int size;
    T * stackArray;

};

template <class T>
void stack<T>:: print(int index)
{
	cout<<stackArray[index];
}
template <class T>
bool stack<T> ::isEmpty()
{
	return top==-1
}

template <class T>
bool stack<T> ::isFull()
{
	return top==size  ;
}

template <class T>
stack<T>::stack(int size)
{
	if (size<=0)
	{
		cout<<"the size is no less than 0";
		return ;
	}
	else{
		top = -1;
		this->size = size;   
		this->stackArray = new T[size];
		for (int i=0;i<this->size;i++)
		{
			stackArray[i]=0;
		}
	}
	
}

template <class T>
stack<T>::~stack()
{
	delete []stackArray;
}

template <class T>
void stack<T>:: pop()
{
	if false==isEmpty()
	{
		cout<<"the stack is not empty";
		stackArray[top--]=0;
		
	}
	else
	{
		cout<<"the stack is  empty";
		return;
	}
	
}

template <class T>
void stack<T>::push(T  &a)
{
	if (true == isFull())
		return;
	else
	{
		stackArray[++top] = a;
	}
}



在main函数中定义,使用类模板,并将template实例化为double类型。

#include <iostream>
#include "stack.h"

using namespace std;
int main()
{
	int size = 20;
	stack<double>stak(size);
	double element=0.9;
	stak.push(element);
	stak.print(0);
}

值得注意的是在这里的top的自加和自减的顺序,在push的时候,要先自加,然后再压入元素。而在pop的时候,要先弹出元素,然后再自减。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值