#ifndef MYLIST_H_#define MYLIST_H_#include<iostream>const int Len = 10;class myList{ private: double Doubles[Len]; //最多存放10个double int Max; public: myList(); myList(double dt , int nu); //存放nu个dt myList(double* dt , int nu); ~myList(); void pushBack(double dt); //尾部添加数据 bool isEmpty()const; bool isFull()const; void visit(void (*pf)(double));}; #endifvoid show(double mid); //这个函数用于简单的显示一个double
myList.cxx#include"myList.h"myList::myList():Max(0){}myList::myList(double dt , int nu){ Max = nu ; for(int i = 0 ; i < nu ; ++i) *(Doubles+i) = dt;}myList::myList(double* dt , int nu){ Max = nu; for(int i = 0 ; i < nu ; ++i) *(Doubles+i) = *(dt+i);}myList::~myList(){}void myList::pushBack(double dt){ *(Doubles+Max) = dt; ++Max;}bool myList::isEmpty()const{ if(Max == 0) return true; else return false;}bool myList::isFull()const{ if(Max == Len) return true; else return false;}void myList::visit(void (*pf)(double)){ if(Max ==0) { std::cout<<"无可显示内容\n"; //为空则不做显示 return; } for(int i = 0 ; i < Max ; ++i) { std::cout<<"第"<<i+1<<"个数为:"; (*pf)(*(Doubles+i)); }}void show(double mid){ std::cout<<mid<<std::endl;}
main.cxx#include"myList.h"int main(){ myList A(1.1,10); double mid[5] = {1.1,2.2,3.4,5.6,5.1}; myList B(mid,5); myList C; if(A.isEmpty()) std::cout<<"A为空\n"; else if(A.isFull()) std::cout<<"A饱和\n"; else std::cout<<"A不为空,但可添加数据\n"; if(B.isEmpty()) std::cout<<"B为空\n"; else if(B.isFull()) std::cout<<"B饱和\n"; else std::cout<<"B不为空,但可添加数据\n"; if(C.isEmpty()) std::cout<<"C为空\n"; else if(C.isFull()) std::cout<<"C饱和\n"; else std::cout<<"C不为空,但可添加数据\n"; std::cout<<"显示A\n"; A.visit(show); std::cout<<"显示B\n"; B.visit(show); B.pushBack(10.11); std::cout<<"显示添加数据后的B\n"; B.visit(show); std::cout<<"显示C\n"; C.visit(show); return 0;}