⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clist.h

📁 vc当中比较容易遇到的过河问题
💻 H
字号:
//表类
#ifndef clist
#define clist
#include "listIterator.h"
#include <assert.h>
#include"link.h"
template <class T> class link;
template <class T> class listIterator;
template <class T> class list         
{
public:
	list();
	list(const list<T> & source);
	virtual ~list();
	virtual void add (T value);
	virtual void deleteAllValues();
	T firstElement() const;
	virtual int includes(T value)const;
	int isEmpty()const;
	virtual void removeFirst();
	list<T> *duplicate()const;
protected:
	link<T> *ptrToFirstLink;
	friend class listIterator<T>;
};

template <class T> list<T>::list():ptrToFirstLink(0)
{
}

template <class T>int list<T>::isEmpty()const
{
  return ptrToFirstLink==0;
}

template<class T> list<T>::list(const list<T> & source)
{
  if(source.isEmpty())
	  ptrToFirstLink=0;
  else
  {
    link<T> *firstlink=source.ptrToFirstLink;
	ptrToFirstLink=firstlink->duplicate();
  }
}

template <class T> void list<T>::add(T val)
{
	ptrToFirstLink=new link<T>(val,ptrToFirstLink);
	assert(ptrToFirstLink!=0);
}

template <class T> T list<T>::firstElement()const
{
  assert(ptrToFirstLink!=0);
  return ptrToFirstLink->value;
}

template <class T> void list<T>::removeFirst()
{
  assert(ptrToFirstLink!=0);
  link<T> *p=ptrToFirstLink;
  ptrToFirstLink=p->ptrToNextLink;
  delete p;
}

template <class T> int list<T>::includes(T v)const
{
  for (link<T> *p=ptrToFirstLink;p;p=p->ptrToNextLink)
	  if (v==p->value)
		  return 1;
	  return 0;
}

template <class T> void list<T>::deleteAllValues()
{
  link<T> *next;
  for(link<T> *p=ptrToFirstLink;p!=0;p=next)
  {
    next=p->ptrToNextLink;
	p->ptrToNextLink=0;
	delete p;
  }
  ptrToFirstLink=0;
}

template <class T> list<T> *list<T>::duplicate()const
{
 list<T> *newlist=new list<T>;
  assert(newlist!=0);
  if(ptrToFirstLink)
	  newlist->ptrToFirstLink=ptrToFistLink->duplicate();
  return newlist;
}

template <class T>list<T>::~list()
{
  deleteAllValues();
}

#endif //glist

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -