数据结构c++实现——栈与队列

  • stack.h
#ifndef STACK_H
#define STACK_H

#include <string>

const int MAXSIZE = 200;

template<typename T>
class Stack
{
public:
    Stack():top(-1) {}

    //是否为空
    bool empty();
    //进栈
    void push(T);
    //出栈
    void pop();
    //返回元素个数
    size_t size();
    //得到栈顶元素
    T get_top();
    //遍历
    void print();

private:
    T data[MAXSIZE];
    int top;
};


#endif // STACK_H

template<typename T>
bool Stack<T>::empty()
{
    if(top == -1)
        return true;
    else
        return false;
}

template<typename T>
void Stack<T>::push(T e)
{
    if(this->size() > MAXSIZE)
        return ;
    data[++top] = e;
}

template<typename T>
void Stack<T>::pop()
{
    if(top == -1)
        return ;
    top--;
}

template<typename T>
size_t Stack<T>::size()
{
    return top + 1;
}

template<typename T>
T Stack<T>::get_top()
{
    if(!this->empty())
        return data[top];
}

template<typename T>
void Stack<T>::print()
{
    for(int i = 0; i < top + 1; ++i)
    {
        std::cout<<data[i]<<" ";
    }
    std::cout<<std::endl;
}
  • queue.h
#ifndef QUEUE_H
#define QUEUE_H

#include <string>

const int MAX = 200;

template<typename T>
class Queue
{
public:
    Queue():
        front(0), rear(0){}

    //是否为空
    bool empty();
    //进队
    void push(T);
    //出队
    void pop();
    //返回元素个数
    size_t size();
    //得到队首元素
    T get();
    //遍历
    void print();

private:
    T data[MAX];
    int front;
    int rear;
};

#endif // QUEUE_H

template<typename T>
bool Queue<T>::empty()
{
    if(front == rear)
        return true;
    else
        return false;
}

template<typename T>
void Queue<T>::push(T e)
{
    if(rear <= MAXSIZE)
        data[rear++] = e;
}

template<typename T>
void Queue<T>::pop()
{
    if(front == rear)
        return ;
    front++;
}

template<typename T>
size_t Queue<T>::size()
{
    return rear - front;
}

template<typename T>
T Queue<T>::get()
{
    return data[front];
}

template<typename T>
void Queue<T>::print()
{
    int i = front;
    while(i != rear)
    {
        std::cout<<data[i]<<" ";
        ++i;
    }
    std::cout<<std::endl;
}
  • main.cpp
#include <iostream>
#include "stack.h"
#include "queue.h"
using namespace std;

int main(int argc, char *argv[])
{
//    string s1("i"), s2("like"), s3("this");
//    Stack<string> stack;
//    stack.push(s1);
//    stack.push(s2);
//    stack.push(s3);
//    stack.print();
//    cout<<"---------------------------------------"<<endl;
//    cout<<stack.empty()<<endl;
//    cout<<stack.get_top()<<endl;
//    cout<<stack.size()<<endl;
//    stack.pop();
//    stack.print();


    string s1("i"), s2("like"), s3("this");
    Queue<string> q;
    q.push(s1);
    q.push(s2);
    q.push(s3);
    q.print();
    cout<<"---------------------------------------"<<endl;
    cout<<q.empty()<<endl;
    cout<<q.get()<<endl;
    cout<<q.size()<<endl;
    q.pop();
    q.print();

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值