C++用类链表模仿栈操作
来源:互联网 发布:新闻的作用和意义知乎 编辑:程序博客网 时间:2024/06/07 16:44
#include <iostream>
#include<string>
using namespace std;
template<class T>class Stack
{
private:
struct Node
{
T data;
Node *next;
};
Node *head;
Node *p;
int length;
public:
Stack()
{
head = NULL;
length = 0;
}
void push(T n)//入栈
{
Node *q = new Node;
q->data = n;
if (head == NULL)
{
q->next = head;
head = q;
p = q;
}
else
{
q->next = p;
p = q;
}
length ++;
}
T pop()//出栈并且将出栈的元素返回
{
if (length <= 0)
{
abort();
}
Node *q;
T data;
q = p;
data = p->data;
p = p->next;
delete(q);
length --;
return data;
}
int size()//返回元素个数
{
return length;
}
T top()//返回栈顶元素
{
return p->data;
}
bool isEmpty()//判断栈是不是空的
{
if (length == 0)
{
return true;
}
else
{
return false;
}
}
void clear()//清空栈中的所有元素
{
if (length > 0)
{
pop();
}
}
};
int main()
{
Stack<string> s;
s.push("abc");
s.push("def");
s.push("ghi");
while(!s.isEmpty())
{
cout<<s.pop()<<endl;
}
return 0;
}
#include<string>
using namespace std;
template<class T>class Stack
{
private:
struct Node
{
T data;
Node *next;
};
Node *head;
Node *p;
int length;
public:
Stack()
{
head = NULL;
length = 0;
}
void push(T n)//入栈
{
Node *q = new Node;
q->data = n;
if (head == NULL)
{
q->next = head;
head = q;
p = q;
}
else
{
q->next = p;
p = q;
}
length ++;
}
T pop()//出栈并且将出栈的元素返回
{
if (length <= 0)
{
abort();
}
Node *q;
T data;
q = p;
data = p->data;
p = p->next;
delete(q);
length --;
return data;
}
int size()//返回元素个数
{
return length;
}
T top()//返回栈顶元素
{
return p->data;
}
bool isEmpty()//判断栈是不是空的
{
if (length == 0)
{
return true;
}
else
{
return false;
}
}
void clear()//清空栈中的所有元素
{
if (length > 0)
{
pop();
}
}
};
int main()
{
Stack<string> s;
s.push("abc");
s.push("def");
s.push("ghi");
while(!s.isEmpty())
{
cout<<s.pop()<<endl;
}
return 0;
}
0 0
- C++用类链表模仿栈操作
- 模仿鼠标操作代码
- c++list模仿
- 模仿栈
- java学习笔记 基础 数组模仿栈的操作
- 我的C/C++之路-012课(模仿DOS文件复制操作)
- C语言 HexToBin BinToHex 模仿
- C/C++模仿小灵通系统
- C语言模仿C++多态
- C 语言模仿实现HashTable
- C语言模仿C#事件
- Joint Stacks--模仿栈
- Linkedlist模仿栈
- 模仿
- 模仿
- 模仿
- 模仿
- Python 目录操作, 模仿linux tree 命令
- 事务的原子性,一致性,隔离性,持久性
- 机器学习——海量数据挖掘解决方案
- Razor中使用三元运算符
- MFC中设备上下文的概念和继承关系图解
- Kibana和logstash实时日志查询、收集与分析系统
- C++用类链表模仿栈操作
- 欢迎使用CSDN-markdown编辑器
- 工具类- 身份证校验
- RecyclerView's Note
- 整合SSH java.lang.ClassCastException: xxx_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy
- ios 9.0以后关于UIAlertView和 UIActionSheet使用的一些新的变化
- 蓝桥杯算法—— 算法训练 前缀表达式
- linux下cat命令详解
- Cocoapods安装步骤(OS X 10.11环境)