堆的基本实现

来源:互联网 发布:手机淘宝网电脑版登陆 编辑:程序博客网 时间:2024/05/18 14:28

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

    直接上代码:

    

栈的类实现:
//使用类模板来实现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的时候,要先弹出元素,然后再自减。

0 0