数据表与搜索表的类定义 #include <iostream. h> #include <assert.h> const int defaultsize =100 template <class K, class e> class datalist /数据表类的前视定义K为 关键码对应的类,E为其他属性对应的类 template <class K, class e> class dataNode i /数据表中结点类的定义 friend class datalist<k, e> /)声明其友元类为 datalist
数据表与搜索表的类定义 #include <iostream.h> #include <assert.h> const int defaultSize = 100; template <class K, class E> class dataList; //数据表类的前视定义, K为 关键码对应的类,E为其他属性对应的类 template <class K, class E > class dataNode { //数据表中结点类的定义 friend class dataList<K, E>; //声明其友元类为dataList 6
public: dataNode(const K x, const E e) key (x), other(e)i 构造函数 getKey( const{ return key;}读取关键码 void setKey(Kx){key=x;}∥修改关键码 private: k key /关键码域 E other: ∥其他域(视问题而定)
public: dataNode (const K x, const E e) : key(x), other(e) { } //构造函数 K getKey() const { return key; } //读取关键码 void setKey (K x) { key = x; } //修改关键码 private: K key; //关键码域 E other; //其他域(视问题而定) }; 7
template <class k, class e> class datalist i /数据表类定义 public: datalist (int sz = defaultsize) ArraySize(sz), Currentsize(o)t Element= new datanode<K, e>[sz]i; assert(Element=NULl); dataList( datalist<K,E>&R);∥复制构造函数 virtual~ dataList{ delete[ Element;}∥析构函数 virtual int Lengthoi return Currentsize; j 求表的长度 virtual k getKey (int 1)const i ∥提取第讣个(从1开始)元素的key值
template <class K, class E > class dataList { //数据表类定义 public: dataList (int sz = defaultSize) : ArraySize(sz), CurrentSize(0) { Element = new dataNode<K, E>[sz]; assert (Element != NULL); } dataList (dataList<K, E>& R); //复制构造函数 virtual ~dataList() { delete []Element; } //析构函数 virtual int Length() { return CurrentSize; } //求表的长度 virtual K getKey (int i) const { //提取第 i个(从1开始)元素的key值 8
assert(i>0&i<= currentsize) return Elementi-1] key; virtual void setKey(Kx, int ii ∥修改第个(从1开始)元素的key值 assert(i>0 &i<= Currentsize ) Element[i-1). key =X; virtual int Seq Search( const Kx) const;∥搜索 virtual bool Insert(KX, eel) /插入 virtual bool remove(K X, e& el); ∥删除 friend ostream& operator≤≤( ostream& out, const datalist<K, e>& outlist); /输出
assert (i > 0 & i <= CurrentSize); return Element[i-1].key; } virtual void setKey (K x, int i) { //修改第 i个(从1开始)元素的key值 assert (i > 0 & i <= CurrentSize); Element[i-1].key = x; } virtual int SeqSearch (const K x) const; //搜索 virtual bool Insert (K x , E e1); //插入 virtual bool Remove (K x, E& e1); //删除 friend ostream& operator << (ostream& out, const dataList<K, E>& OutList); //输出 9
friend istream& operator >>(istream& in datalist<K, e>& InList) /输入 p rotected datanode<K,E>* lement:数据表存储数组 int ArraySize, Currentsize; 数组最大长度和当前长度 S
friend istream& operator >> (istream& in, dataList<K, E>& InList); //输入 protected: dataNode<K, E> *Element; //数据表存储数组 int ArraySize, CurrentSize; //数组最大长度和当前长度 }; 10