手动实现栈容器(链表)
#include <iostream>
using namespace std;
template <typename T>
class my_stack
{
private:
class node
{
public:
T num;
node *next;
};
public:
node *head;
node *TOP;
//定义无参构造
my_stack(){
head = new node;
head->next=nullptr;
TOP=head;
}
//定义析构函数
~my_stack(){
delete head;
head=nullptr;
}
//入栈
void push(T aa)
{
node *p=new node;
p->num=aa;
p->next=nullptr;
TOP->next=p;
TOP=p;
}
//出栈
T pop()
{
node *p=head;
T temp=TOP->num;
while(p->next!=TOP)
{
p=p->next;
}
delete p->next;
TOP=p;
return temp;
}
//计算大小
int size()
{
int i=0;
node *p=head;
while(p!=TOP)
{
p=p->next;
i++;
}
return i;
}
//判空
bool empty()
{
if(head==TOP)
return true;
else
return false;
}
//输出栈顶元素
T top()
{
return TOP->num;
}
};
int main()
{
my_stack<int> ss;
cout<<ss.size()<<endl;
ss.push(2);
ss.push(3);
ss.push(4);
ss.push(5);
cout<<ss.size()<<endl;
cout<<ss.pop()<<endl;
cout<<ss.top()<<endl;
}

本文介绍了一个使用链表实现的手动栈容器。该栈容器支持基本的栈操作,如入栈(push)、出栈(pop)、获取栈顶元素(top)、判断是否为空(empty)以及计算栈的大小(size)。

被折叠的 条评论
为什么被折叠?



