📜  print linkedstack cpp - C++ (1)

📅  最后修改于: 2023-12-03 15:33:47.721000             🧑  作者: Mango

Print LinkedStack CPP - C++介绍

LinkedStack是一种常用的栈数据结构的实现方式,它采用链表来存储数据。由于LinkedStack是动态分配内存的数据结构,因此可以在需要的时候按需分配内存。

1. LinkedStackCPP实现

下面是一份C++中使用模板类和指针来实现LinkedStack的代码片段:

template <typename T>
struct Node {
    T data;
    Node* next;
};

template <typename T>
class LinkedStackCPP {
public:
    LinkedStackCPP() {
        top = nullptr;
    }
    ~LinkedStackCPP() {
        while (!isEmpty()) {
            pop();
        }
        top = nullptr;
    }
    bool isEmpty() {
        return (nullptr == top);
    }
    void push(T data) {
        Node<T>* node = new Node<T>();
        node->data = data;
        node->next = top;
        top = node;
    }
    void pop() {
        if (!isEmpty()) {
            Node<T>* node = top;
            top = top->next;
            delete node;
        }
    }
    T peek() {
        if (!isEmpty()) {
            return top->data;
        }
        return T();
    }
    void print() {
        std::cout << "LinkedStackCPP: ";
        if (isEmpty()) {
            std::cout << "Empty" << std::endl;
            return;
        }
        Node<T>* node = top;
        while (node != nullptr) {
            std::cout << node->data << " ";
            node = node->next;
        }
        std::cout << std::endl;
    }
private:
    Node<T>* top;
};

在代码中,我们首先定义了一个节点(Node)结构体,其包含数据和指向下一个节点的指针。然后,我们定义了一个LinkedStackCPP类,其中包含了常用的栈操作函数。

其中,push()函数用于将一个元素入栈,pop()函数用于将栈顶元素出栈,而peek()函数则返回栈顶元素的值,但是并不弹出。isEmpty()函数用于判断栈是否为空,print()函数则可以打印栈中的所有元素。

2. LinkedStackCPP使用示例

下面是一个使用LinkedStackCPP类的例子:

LinkedStackCPP<int> stack;

// push elements to stack
stack.push(1);
stack.push(2);
stack.push(3);

// print stack
stack.print(); // LinkedStackCPP: 3 2 1

// pop element from stack
stack.pop();

// print stack
stack.print(); // LinkedStackCPP: 2 1

// get top element in stack
int top = stack.peek();
std::cout << "Top element: " << top << std::endl; // Top element: 2

运行上面的代码,输出如下:

LinkedStackCPP: 3 2 1
LinkedStackCPP: 2 1
Top element: 2
3. 总结

LinkedStack是一种常用的栈数据结构,使用链表来存储元素。在C++中,我们可以通过模板类和指针来实现LinkedStackCPP,实现操作包括入栈(push)、出栈(pop)、判断栈是否为空(isEmpty)、查看栈顶元素(peek)以及打印栈中的所有元素(print)。通过LinkedStackCPP,我们可以方便地实现各种栈相关的操作。