C语言范型编程(Stack例子)

在学数据结构的时候,栈(Stack)是一种非常基础的数据结构,栈具有先进后出的特点,用栈能够解决很多中问题,比如括号表达式匹配问题,比如用栈来模拟函数调用的过程。但是在教科书上给出的栈的代码中,栈中元素都是固定的,如果哪天我们需要使用另一种元素类型,我们就需要来修改这些代码。然后C语言有范型编程,也就是说我们在声明栈结构体时,可以对栈的元素类型给出一个通用的类型,以后使用Stack类型创建实体时指明元素类型是什么即可。

#include <iostream>
using namespace std;

template <typename T>
struct StackNode{
    struct StackNode* next;
    struct StackNode* prev;
    T value;
};

template <typename T>
struct Stack {
    struct StackNode<T> head;
    StackNode<T>* top;
};

template <typename T>
void create_stack(struct Stack<T>& stack) {
    stack.head;
    stack.top = &stack.head;
}

int main() {
    struct Stack<int> stack;
    create_stack(stack);
    return 0;
}