Visual C++ 6.0代码:
本帖隐藏的内容
- // 线性表
- // 线性表
- // by fantuanxiaot
- #include <iostream>
- #include <cmath>
- #include <iomanip>
- #include <cstdlib>
- #include <vector>
- #include <string>
- using namespace std;
- // member function definition looks like a ctor,
- // but name does not match enclosing class
- // 这个错误是因为除构造函数外所有的类成员函数都要有返回值的类型,
- // 如果没有返回值,就在函数定义前面加上void,这个编译错误就可以解决
- // ////////////////////////////////////////////////////////////////////////
- // Assert函数
- void Assert(bool val,string s)
- {
- if(!val)
- {
- cout<<"Asserted Failed:"<<s<<endl;
- exit(1);
- }
- }
- // ////////////////////////////////////////////////////////////////////////
- // 定义一个List的虚拟类
- template<class E>
- class List
- {
- private:
- void operator=(const List&){}
- List(const List&){}
- public:
- // constuctor and destructor
- List(){}
- virtual ~List(){}
- // 一些基本的成员函数
- virtual void clear()=0;
- virtual void insert(const E& item)=0;
- virtual void append(const E& item)=0;
- virtual E remove()=0;
- virtual void moveToStart()=0;
- virtual void moveToEnd()=0;
- virtual void prev()=0;
- virtual void next()=0;
- // 常成员函数
- virtual int length() const=0;
- virtual int currPos() const=0;
- virtual void moveToPos(int pos)=0;
- virtual const E& getValue() const=0;
- };
- // ////////////////////////////////////////////////////////////////////////
- // ////////////////////////////////////////////////////////////////////////
- // 线性表的制作
- template<class E>
- class AList:public List<E>
- {
- private:
- int maxSize;
- int listSize;
- // postion of current elements
- int curr;
- E* listArray;
- public:
- // 构造函数
- // 这里的defaultSize必须定义
- AList(int size=100)
- {
- maxSize=size;
- listSize=curr=0;
- // 创建一个新的指针
- listArray=new E[maxSize];
- }
- // 析构函数
- ~AList(){delete[] listArray;}
- void clear()
- {
- delete[] listArray;
- listSize=curr=0;
- listArray=new E[maxSize];
- }
- // 在curr的位置内插入一个元素
- void insert(const E&it)
- {
- Assert(listSize<maxSize,"List Capacity Exceeded");
- for(int i=listSize;i>curr;i--)
- {
- listArray[i]=listArray[i-1];
- }
- listArray[curr]=it;
- listSize++;
- }
- // 在表的末尾加入一个元素
- void append(const E&it)
- {
- Assert(listSize<maxSize,"List Capacity Exceeded");
- listArray[listSize++]=it;
- }
- // 移动当指向的元素
- E remove()
- {
- Assert((curr>=0)&&(curr<listSize),"No Current elements");
- E it=listArray[curr];
- for(int i=curr;i<=listSize-1;i++)
- listArray[i]=listArray[i+1];
- listSize--;
- // 返回排除的元素
- return it;
- }
- // 返回开始
- void moveToStart()
- {
- curr=0;
- }
- // 返回结尾
- void moveToEnd()
- {
- curr=listSize;
- }
- // Back up
- void prev()
- {
- if(curr!=0) curr--;
- }
- // Next size
- void next()
- {
- if(curr<listSize) curr++;
- }
- // return the list size
- int length() const
- {
- return listSize;
- }
- int currPos() const
- {
- return curr;
- }
- // 来到当前的位置
- void moveToPos(int pos)
- {
- Assert((pos>=0)&&(pos<=listSize),"Pos Out of range");
- curr=pos;
- }
- // return current elements
- const E& getValue() const
- {
- Assert((curr>=0)&&(curr<listSize),"No Current elements");
- return listArray[curr];
- }
- };
- // ////////////////////////////////////////////////////////////////////////
- // ////////////////////////////////////////////////////////////////////////
- // 主函数
- int main()
- {
- AList<int> list1(100);
- for(int i=0;i<=50;i++)
- {
- list1.append(i+1);
- }
- for(i=0;i<=50;i++)
- {
- cout<<list1.getValue()<<" ";
- list1.next();
- if(i%5==4) cout<<endl;
- }
- return 0;
- }
- // ////////////////////////////////////////////////////////////////////////
- // ////////////////////////////////////////////////////////////////////////
Visual Studio 2012的代码:
本帖隐藏的内容
- // 线性表
- // 线性表
- // by fantuanxiaot
- #include <iostream>
- #include <cmath>
- #include <iomanip>
- #include <cstdlib>
- #include <vector>
- #include <string>
- using namespace std;
- // member function definition looks like a ctor,
- // but name does not match enclosing class
- // 这个错误是因为除构造函数外所有的类成员函数都要有返回值的类型,
- // 如果没有返回值,就在函数定义前面加上void,这个编译错误就可以解决
- // ////////////////////////////////////////////////////////////////////////
- // Assert函数
- void Assert(bool val,string s)
- {
- if(!val)
- {
- cout<<"Asserted Failed:"<<s<<endl;
- exit(1);
- }
- }
- // ////////////////////////////////////////////////////////////////////////
- // 定义一个List的虚拟类
- template<class E>
- class List
- {
- private:
- void operator=(const List&){}
- List(const List&){}
- public:
- // constuctor and destructor
- List(){}
- virtual ~List(){}
- // 一些基本的成员函数
- virtual void clear()=0;
- virtual void insert(const E& item)=0;
- virtual void append(const E& item)=0;
- virtual E remove()=0;
- virtual void moveToStart()=0;
- virtual void moveToEnd()=0;
- virtual void prev()=0;
- virtual void next()=0;
- // 常成员函数
- virtual int length() const=0;
- virtual int currPos() const=0;
- virtual void moveToPos(int pos)=0;
- virtual const E& getValue() const=0;
- };
- // ////////////////////////////////////////////////////////////////////////
- // ////////////////////////////////////////////////////////////////////////
- // 线性表的制作
- template<class E>
- class AList:public List<E>
- {
- private:
- int maxSize;
- int listSize;
- // postion of current elements
- int curr;
- E* listArray;
- public:
- // 构造函数
- // 这里的defaultSize必须定义
- AList(int size=100)
- {
- maxSize=size;
- listSize=curr=0;
- // 创建一个新的指针
- listArray=new E[maxSize];
- }
- // 析构函数
- ~AList(){delete[] listArray;}
- void clear()
- {
- delete[] listArray;
- listSize=curr=0;
- listArray=new E[maxSize];
- }
- // 在curr的位置内插入一个元素
- void insert(const E&it)
- {
- Assert(listSize<maxSize,"List Capacity Exceeded");
- for(int i=listSize;i>curr;i--)
- {
- listArray[i]=listArray[i-1];
- }
- listArray[curr]=it;
- listSize++;
- }
- // 在表的末尾加入一个元素
- void append(const E&it)
- {
- Assert(listSize<maxSize,"List Capacity Exceeded");
- listArray[listSize++]=it;
- }
- // 移动当指向的元素
- E remove()
- {
- Assert((curr>=0)&&(curr<listSize),"No Current elements");
- E it=listArray[curr];
- for(int i=curr;i<=listSize-1;i++)
- listArray[i]=listArray[i+1];
- listSize--;
- // 返回排除的元素
- return it;
- }
- // 返回开始
- void moveToStart()
- {
- curr=0;
- }
- // 返回结尾
- void moveToEnd()
- {
- curr=listSize;
- }
- // Back up
- void prev()
- {
- if(curr!=0) curr--;
- }
- // Next size
- void next()
- {
- if(curr<listSize) curr++;
- }
- // return the list size
- int length() const
- {
- return listSize;
- }
- int currPos() const
- {
- return curr;
- }
- // 来到当前的位置
- void moveToPos(int pos)
- {
- Assert((pos>=0)&&(pos<=listSize),"Pos Out of range");
- curr=pos;
- }
- // return current elements
- const E& getValue() const
- {
- Assert((curr>=0)&&(curr<listSize),"No Current elements");
- return listArray[curr];
- }
- };
- // ////////////////////////////////////////////////////////////////////////
- // ////////////////////////////////////////////////////////////////////////
- // 主函数
- int main()
- {
- AList<int> list1(100);
- for(int i=0;i<=50;i++)
- {
- list1.append(i+1);
- }
- for(int i=0;i<=50;i++)
- {
- cout<<list1.getValue()<<" ";
- list1.next();
- if(i%5==4) cout<<endl;
- }
- return 0;
- }
- // ////////////////////////////////////////////////////////////////////////
- // ////////////////////////////////////////////////////////////////////////