首页 > 其他 > 详细

LinkedListStack

时间:2020-04-16 18:51:31      阅读:52      评论:0      收藏:0      [点我收藏+]

??链式栈:就是一种操作受限的单向链表,每次入栈一个元素,向链表中添加一个节点,出栈一个元素,释放一个节点。因为栈具有“后进先出”的特点,如果每次在链表的尾部进行插入和删除,就要遍历整个链表来找到尾节点。而在头部进行插入和删除时,只需根据头指针即可找到链表的首元素结点。而无需遍历链表。所以链式栈的出,入栈通过对链表进行头删和头插来实现。

LinkedList

代码清单

#ifndef C___LINKEDLISTSTACK_H
#define C___LINKEDLISTSTACK_H
#include "LinkedList.h"
template<typename T>
class Stack {
public:
    virtual int getSize()const = 0;
    virtual bool isEmpty()const = 0;
    virtual void push(T& e) = 0;
    virtual T pop() = 0;
    virtual T peek()const = 0;
};

template<typename T>
class LinkedListStack : public Stack<T> {
public:
    LinkedListStack();
    int getSize()const;
    bool isEmpty()const;
    void push(T&e);
    T pop();
    T peek()const;
    void print()const;
private:
    LinkedList<T>*list;
};

template<typename T>
int LinkedListStack<T>::getSize() const {
    return list->getSize();
}

template<typename T>
bool LinkedListStack<T>::isEmpty() const {
    return list->isEmpty();
}

template<typename T>
void LinkedListStack<T>::push(T& e) {
    list->addFirst(e);
}

template<typename T>
T LinkedListStack<T>::pop() {
    return list->removeFirst();
}

template<typename T>
T LinkedListStack<T>::peek()const {
    return list->getFirst();
}

template<typename T>
void LinkedListStack<T>::print() const {
    std::cout << "Stack: size = " << list->getSize() << std::endl;
    std::cout << "bottom ";
    list->print();
    std::cout << " top" << std::endl;
}

template<typename T>
LinkedListStack<T>::LinkedListStack() {
    list = new LinkedList<T>();
}

#endif //C___LINKEDLISTSTACK_H

LinkedListStack

原文:https://www.cnblogs.com/chengmf/p/12714781.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!