结点 ● {data;next}
data:结点数据
next:指向结点的下一个结点
思路:
●(1)——●(2)——●(3)——●(4)
⬆
栈顶
●(3) = ●(4) ->next
#include<iostream>
using namespace std;
//定义结点------------------------------------
template<typename T>
struct NODE {
T data;
NODE *next;
};
//定义类--------------------------------------
template<typename T>
class stack {
private:
NODE<T> *top;
int N;
public:
stack() {
N = 0;
top = NULL;
}
void push(T &item);
T pop();
};
//入栈------------------------------------------------------
template<class T>
void stack<T>::push(T &item) {
NODE<T> *t;
if (top == NULL) {
top = new NODE<T>[1];
top->data = item;
top->next = NULL;
N++;
}
else {
t = new NODE<T>[1];
t->data = item;
t->next = top;
top = t;
}
}
//出栈--------------------------------------------------------
template<typename T>
T stack<T>::pop() {
if (top == NULL)return -1;
T tmpdata;
tmpdata = top->data;
top = top->next;
N--;
return tmpdata;
}