C++学习日志之运用类模板正确使用指针栈
来源:互联网 发布:c语言开发应用程序 编辑:程序博客网 时间:2024/05/21 17:32
由于指针栈的特殊性,模板类中需要包含析构函数,复制构造函数,复制运算符等。
student.h
#ifndef STUENT_H_#define STUDENT_H_template <class Type>class Stack{private: enum{MAX=10}; int stacksize; Type *item; int top;public: explicit Stack(int ss=MAX); Stack(const Stack &st); ~Stack() {delete [] item;} bool isempty() {return top==0;} bool isfull() {return top==MAX;} bool push(const Type &item); bool pop(Type & item); Stack & operator = (const Stack &st);};template <class Type>Stack<Type>::Stack(int ss):stacksize(ss),top(0){ item = new Type [stacksize];}template <class Type>Stack<Type>::Stack(const Stack &st){ stacksize = st.stacksize; top=st.top; item=new Type [st.stacksize]; for(int i=0;i<stacksize;i++) item[i]=st.item[i];}template <class Type>bool Stack<Type>::push(const Type & items){ if(top<stacksize) { item[top++]=items; return true; } else return false;}template <class Type>bool Stack<Type>::pop(Type & items){ if(top>0) { items=item[--top]; return true; } else return false;}template <class Type>Stack<Type> & Stack<Type>::operator = (const Stack<Type> & st){ if(this==&st) return *this; delete [] item; stacksize = st.stacksize; top=st.top; item = new Type [st.stacksize]; for(int i=0;i<stacksize;i++) item[i]=st.item[i]; return *this;}#endif // STUENT_H_
main.cpp
#include<iostream>#include"student.h"#include<cstdlib>#include<ctime>using std::cin;using std::cout;using std::endl;const int Num =10;int main(){ srand(time(0)); cout << "please enter stack size: "; int stacksize; cin >> stacksize; Stack <const char *> st(stacksize); const char * in[Num] = { "1:hank gilgamesh","2:kiki ishtar","3:betty rocker","4:ian flagranti","5:wolfgang kibble", "6:portia koop","7:joy almondo","8:xaverie paprika","9:juan moore","10:misha mache" }; const char *out[Num]; int processed = 0; int nextin =0; while(processed<stacksize) { if(st.isempty()) st.push(in[nextin++]); else if(st.isfull()) st.pop(out[processed++]); else if(rand()%2&&nextin<Num) st.push(in[nextin++]); else st.pop(out[processed++]); } for(int i=0;i<stacksize;i++) cout << out[i] << endl; cout << "bye."; return 0;}
运行结果:
0 0
- C++学习日志之运用类模板正确使用指针栈
- C++学习日志之运用类模板编写栈操作的实例
- C++学习日志之模板使用递归
- c语言动态内存分配之正确使用指针
- 类模板运用之实现委托类
- C语言基础知识之(二十):指针高级运用
- 正确使用日志Log
- 《C和指针》学习笔记之typedef的使用
- 正确使用指针
- 正确使用指针
- C/C++学习之模板
- 水滴石穿C语言之正确使用const
- C语言之正确使用const
- 水滴石穿C语言之正确使用const
- 水滴石穿C语言之正确使用const
- 水滴石穿C语言程序设计之正确使用const
- 水滴石穿C语言之正确使用const
- C语言之正确使用const
- 模块识别地址到底是个什么东西
- 初识spring boot maven管理--属性文件配置
- PAT 1075. PAT Judge (模拟题)
- java异常处理(三)
- SSH框架
- C++学习日志之运用类模板正确使用指针栈
- Android BroadcastReceiver
- gdb调试命令使用
- mysql使用大全
- Android gradle 0.9 ,编译.so 文件需要注意
- 快速查询本机IP
- CSS Text
- 金额在数据库中的存储方法
- 创业,简单来说,一个是选择,一个是执行。