链式栈简单模板代码
2015-10-22 19:45
381 查看
#include<iostream> #include<stdlib h=""> using namespace std; template <class t=""> class LinkStack; template <class t=""> class StackNode { public: friend class LinkStack<t>; private: T data; StackNode<t> *next; }; template<class t=""> class LinkStack { public: LinkStack() { top = NULL; } ~LinkStack(); bool StackEmpty() { return top ==NULL; } void Push(T x); void Pop(T &x); T GetTop(); private: StackNode<t>*top; }; template<class t=""> //入栈 void LinkStack<t>::Push(T x) { StackNode<t> *p; p = new StackNode<t>; p->data = x; p->next = top; top = p; } template <class t=""> //返回栈顶元素 T LinkStack<t>::GetTop() { if (StackEmpty()) { cout << "为空" << endl; return -1; } else return top->data; } template <class t=""> //出栈 void LinkStack<t>::Pop(T &x) { StackNode<t> *p = top; if (StackEmpty()) { cout << "为空" << endl; } else { x = p->data; top = p->next; delete p; } } template <class t=""> LinkStack<t>::~LinkStack() //析构函数 { StackNode <t> *s; while (top) { s = top->next; delete top; top = s; } } void conversion(int N, int d) //进制转换 { LinkStack<int>S; int i; while (N) { S.Push(N%d); N = N / d; } while (!S.StackEmpty()) { S.Pop(i); cout << i; } cout << endl; } void main() { int N(64), d(2); cout<<"十进制64转化为二进制:"; conversion(N, d); system("PAUSE"); return; } </int></t></t></class></t></t></class></t></class></t></t></t></class></t></class></t></t></class></class></stdlib></iostream>
相关文章推荐
- Spark启动错误Exception in thread “main” java.lang.NoSuchMethodError: scala.collection.immutable.HashSet$
- 【开发工具】Git 以及GitHub环境配置
- C++中关于标准输出流cout中使用递增运算符的问题
- list_entry(ptr, type, member)
- Ubuntu14.04 安装jdk
- RSS 2.0 php生成类,快读生成需要xml文件
- jdk7的新特性
- 关于C#中的CompareTo使用方法
- 1038. 统计同成绩学生(20)
- Getting started with machine learning in Python
- 使用Spring容器取出Bean时的奇怪的ClassCastException
- 图灵机器人(智能云交互API)的一个java实现简单例子
- C++高精度
- 插入排序之直接插入排序算法-java实现
- Java8 特性
- c# 将页面导出到word(含图片及控件)
- 编程范式学习代码--cmpfun
- 代码编译方式 ant +ivy
- map集合类迭代方法
- 如何两个栈实现队列?两个队列实现栈?