亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? list_link.h

?? 一個不錯庫存管理算法
?? H
字號:
#include<iostream.h>
#include<assert.h>
template<class T>
class list;
template<class T>
class listiterator;
//*******************************************************************************
template<class T>
class link
{
public:
	//插入一個新結點
	link<T>*insert(T val);
	//構造函數(shù)
	link(T linkvalue,link<T>* np);
	link(const link<T>& s);
	//復制
    link<T>* duplicate()const;
    friend class list<T>;
    friend class listiterator<T>;
//private:	
    T value;
	link<T>* ptrtonextlink;
};
//--------------------------------------------------------------------
template<class T>
link<T>*link<T>::insert(T val)
{
    ptrtonextlink=new link<T>(val,ptrtonextlink);
    assert(ptrtonextlink!=0);
    return ptrtonextlink;
}

//------------------------------
template<class T>
link<T>::link(T val,link<T>* nxt)
:value(val),ptrtonextlink(nxt){}

//-------------------------------
template<class T>
link<T>::link(const link<T>& s)
:value(s.value),ptrtonextlink(s.ptrtonextlink){}

//------------------------------------
template<class T>
link<T>*link<T>::duplicate()const
{
    link<T>* newlink;
    if(ptrtonextlink!=0)             //當還有下一個結點時遞歸調用復制函數(shù)
    newlink=new link<T>(value,ptrtonextlink->duplicate());
    else
    newlink=new link<T>(value,0);
    assert(newlink!=0);              //檢查動態(tài)分配是否成功
    return newlink;
}

//***********************************************************************
template<class T>
class list
{
public:
    list();
    list(const list<T> &);
    virtual  ~list();
    virtual  void  add(T );
    virtual  void  deleteallvalues();
    T  firstelement( )const;
    virtual  int  includes(T)const;
    int  isempty()const; 
    virtual  void  removefirst();
    list<T> *duplicate()const;
//	friend class listiterator<T>;
//protected:
    link<T>* ptrtofirstlink;
};

//-------------------------------------------------------
template<class T>list<T>::list():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> list<T>::~list()
{
	deleteallvalues();
}

//---------------------------------------------------------
template<class T>void list<T>::add(T val)
{
	ptrtofirstlink=new link<T>(val,ptrtofirstlink);
    assert(ptrtofirstlink!=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>T list<T>::firstelement()const
{
	assert(ptrtofirstlink!=0);
	return ptrtofirstlink->value;
}

//-------------------------------------------------------
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>int list<T>::isempty()const
{
	return ptrtofirstlink==0;
}

//-------------------------------------------------------
template<class T>void list<T>::removefirst()
{	
	assert(ptrtofirstlink!=0);
    link<T>*p=ptrtofirstlink;
    ptrtofirstlink=p->ptrtonextlink;
    delete p;
}

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

//********************************************************************iterator類定義
template<class T>
class iterator{
public:
	//對循環(huán)做初始化
	virtual int init()=0;
	//檢查是否還有元素
	virtual int operator!()=0;
	//訪問當前元素
	virtual T operator()()=0;
	//訪問下一個元素
	virtual int operator++()=0;
	//改變當前元素
	virtual void operator=(T newvalue)=0;
};

//***********************************************************************listiterator
template<class T>class listiterator:public iterator<T>{//表遍歷
	public: 
		listiterator(list<T>& );
		virtual  int  init();//初始化游標
  		virtual  int operator!();
  		virtual  T  operator()();
  		virtual  int operator++();//只有該操作能改變游標指向
  		virtual  void operator=(T);
		void  removecurrent();//刪除當前結點
		void  addbefore(T);//在當前結點前插入
		void  addafter(T);//在當前結點后插入
	protected:
		link<T> * currentlink;      //遍歷中的游標(指針)
		link<T> * previouslink;            //遍歷中的前驅游標(指針)
		list<T>& thelist;        //引用一個表
};

//-----------------------------------------------------------------------
template<class T>listiterator<T>::listiterator(list<T>& alist):thelist(alist)
{
	init();
}

//------------------------------------------------------------------------
template<class T>int listiterator<T>::init()
{    
	previouslink=0;
	currentlink=thelist.ptrtofirstlink;
	return currentlink!=0;
}

//--------------------------------------------------------
template<class T>int listiterator<T>::operator!()
{
	if(currentlink!=0)
		return 1;
    if(previouslink!=0)
        return previouslink->ptrtonextlink!=0;
    return thelist.ptrtofirstlink!=0;
}

//------------------------------------------------------------------
template<class T>T listiterator<T>::operator()(){
	if (currentlink!=NULL) 	return  currentlink->value;
	else
if (previouslink!=NULL&&previouslink->ptrtonextlink!=NULL)
			return  previouslink->ptrtonextlink->value;
    else if (previouslink==NULL&&thelist.ptrtofirstlink!=NULL)
			return thelist.ptrtofirstlink->value;

assert(previouslink!=NULL&&previouslink->ptrtonextlink
!=NULL||previouslink==NULL&&thelist.ptrtofirstlink!=NULL);
}

//----------------------------------------------------------------------------
template<class T>int listiterator<T>::operator++()
{
	if(currentlink==0)
	{  
		if(previouslink==0)
            currentlink=thelist.ptrtofirstlink;
        else	
			currentlink=previouslink->ptrtonextlink;
	}
    else 
	{
		previouslink=currentlink;
        currentlink=currentlink->ptrtonextlink;
	}
    return currentlink!=0;
}

//---------------------------------------------------------------
template<class T> void listiterator<T>::operator=(T val){
	if (currentlink!=NULL)
	{
		currentlink->value=val; return;
	}
	else
if (previouslink!=NULL&&previouslink->ptrtonextlink!=NULL)
previouslink->ptrtonextlink->value=val;
return;
    if (previouslink==NULL&&thelist.ptrtofirstlink!=NULL)
thelist.ptrtofirstlink->value=val; return ;
	
assert(previouslink!=NULL&&previouslink->ptrtonextlink
!=NULL||previouslink==NULL&&thelist.ptrtofirstlink!=NULL);
}

//--------------------------------------------------------------
template<class T>void listiterator<T>::removecurrent()
{//刪除當前結點
  link<T> *p;
  if (currentlink!=NULL) {
	if (previouslink==NULL) 
		thelist.ptrtofirstlink=currentlink->ptrtonextlink;
	else previouslink->ptrtonextlink=currentlink->ptrtonextlink;
	delete currentlink;	currentlink=0; 
	return;
  }
  else 
	if (previouslink!=NULL&&previouslink->ptrtonextlink!=NULL){
		p=previouslink->ptrtonextlink;
		previouslink->ptrtonextlink=p->ptrtonextlink;
		delete p; 	return ;
  	}
  	else 
		if (previouslink==NULL&&thelist.ptrtofirstlink!=NULL){
			p=thelist.ptrtofirstlink;
			thelist.ptrtofirstlink=p->ptrtonextlink;
			delete p;
			return ;
  		}
        assert(previouslink!=NULL&&previouslink->ptrtonextlink!=NULL
        ||previouslink==NULL&&thelist.ptrtofirstlink!=NULL);
}

//-----------------------------------------------------------
template<class T>void listiterator<T>::addbefore(T val)
{  
	if(previouslink)
       previouslink=previouslink->insert(val);
    else
	{  
	   thelist.list<T>::add(val);
	   previouslink=thelist.ptrtofirstlink;
	}
}

//-----------------------------------------------------------------
template<class T>
void listiterator<T>::addafter(T val){
	//當前結點非空,在當前結點后插入
	if (currentlink!=NULL) 
		currentlink->insert(val);
	else if (previouslink!=NULL) //當前結點空,但前驅非空
		if (previouslink->ptrtonextlink!=NULL)
			 //前的后繼非空,在前驅的后繼結點后插入
			previouslink->ptrtonextlink->insert(val);
		else 	
		previouslink->insert(val);
	else  if  (thelist.ptrtofirstlink)//表非空,在第一個結點后插入
		 	thelist.ptrtofirstlink-> insert(val);
	else  thelist.add(val);
						//表空,作為第一個結點插入
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久er热在这里只有精品66| 欧美图区在线视频| 在线观看三级视频欧美| 精品三级av在线| 亚洲男人电影天堂| 国内外精品视频| 久久精品国产亚洲5555| 欧美在线一二三四区| 日韩免费电影网站| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲影视资源网| 麻豆成人久久精品二区三区小说| 国产福利精品一区二区| 精品视频一区二区不卡| 国产日韩亚洲欧美综合| 午夜激情一区二区| av在线这里只有精品| 91精品一区二区三区在线观看| 日韩精品中文字幕在线一区| 成人免费一区二区三区在线观看| 亚洲成a人v欧美综合天堂下载| 国产成人精品免费在线| 日韩写真欧美这视频| 最新日韩av在线| 狠狠v欧美v日韩v亚洲ⅴ| 91成人免费电影| 国产精品美日韩| 美女网站色91| 日本韩国欧美三级| 国产区在线观看成人精品 | 国产欧美一区二区在线| 日本免费在线视频不卡一不卡二| av一区二区三区四区| 久久免费午夜影院| 裸体健美xxxx欧美裸体表演| 欧美性xxxxxx少妇| 亚洲精品欧美激情| 9久草视频在线视频精品| 国产色婷婷亚洲99精品小说| 狠狠色狠狠色综合日日91app| 欧美高清一级片在线| 一区二区成人在线视频| 97久久精品人人爽人人爽蜜臀| xnxx国产精品| 国产揄拍国内精品对白| 精品国产免费一区二区三区四区 | 性欧美大战久久久久久久久| 91美女在线视频| ●精品国产综合乱码久久久久| 国产一区二区美女诱惑| 欧美精品一区二区三区蜜桃视频| 亚洲成人av一区二区三区| 欧美性受xxxx黑人xyx| 亚洲电影第三页| 欧美日韩国产三级| 午夜激情一区二区| 日韩一区二区麻豆国产| 日本成人在线网站| 精品国产乱码久久久久久闺蜜| 日韩中文字幕麻豆| 欧美变态tickling挠脚心| 另类调教123区| 久久久三级国产网站| 大尺度一区二区| 18欧美亚洲精品| 欧美伊人精品成人久久综合97| 午夜久久久久久| 欧美成人aa大片| 高清国产午夜精品久久久久久| 中文子幕无线码一区tr| 91丨九色丨国产丨porny| 亚洲另类一区二区| 91精品国产综合久久久久久漫画 | 另类小说欧美激情| 欧美激情一区二区在线| 一道本成人在线| 人人爽香蕉精品| 久久精品一区二区三区四区| 99国内精品久久| 美女视频黄频大全不卡视频在线播放| 日韩精品一区二区三区中文不卡| 日韩av电影免费观看高清完整版在线观看 | 国产午夜精品一区二区三区嫩草| 国产成人免费视| 亚洲一二三专区| 26uuu成人网一区二区三区| 成人av电影在线观看| 亚洲1区2区3区视频| 久久人人爽人人爽| 不卡一区二区三区四区| 婷婷开心久久网| 国产午夜精品一区二区三区四区| 欧美自拍偷拍午夜视频| 国产在线视频一区二区| 一区二区三区欧美| 欧美日韩精品一区二区| 国内精品写真在线观看| 一区二区在线观看视频| 久久久av毛片精品| 色8久久精品久久久久久蜜 | 在线观看91精品国产入口| 激情小说欧美图片| 亚洲影院久久精品| 国产精品麻豆99久久久久久| 欧美日韩高清影院| www.日韩精品| 国产在线一区二区综合免费视频| 亚洲在线中文字幕| 国产精品污污网站在线观看| 日韩一区二区三区四区五区六区| 一本久道久久综合中文字幕| 国产成人精品aa毛片| 日韩av一级电影| 亚洲午夜免费电影| 中文字幕一区视频| 久久品道一品道久久精品| 91精品国产乱| 欧美日韩视频在线第一区| 91亚洲精品久久久蜜桃网站| 豆国产96在线|亚洲| 九九九精品视频| 麻豆成人91精品二区三区| 日韩va亚洲va欧美va久久| 亚洲成人av中文| 亚洲国产精品久久人人爱| 亚洲欧美日韩中文字幕一区二区三区| 精品成人私密视频| 欧美r级在线观看| 日韩精品一区在线观看| 日韩午夜激情电影| 欧美成人精精品一区二区频| 日韩欧美激情在线| 精品久久久久久久一区二区蜜臀| 91精品国产综合久久久蜜臀粉嫩 | 五月婷婷欧美视频| 亚洲成人动漫av| 亚洲主播在线观看| 成人免费在线播放视频| **欧美大码日韩| 中文字幕av不卡| 亚洲欧美偷拍卡通变态| 亚洲综合视频网| 亚洲自拍偷拍综合| 日韩精品一级二级| 久久66热偷产精品| 成人一区二区在线观看| 成人黄色av电影| 97精品久久久午夜一区二区三区 | 成人精品一区二区三区中文字幕| 国产成人亚洲精品狼色在线| 成人黄色a**站在线观看| 色八戒一区二区三区| 欧美日韩一区久久| 欧美成人性福生活免费看| 久久久精品免费网站| 国产精品灌醉下药二区| 亚洲一区二区三区中文字幕在线| 日韩国产一二三区| 国产91高潮流白浆在线麻豆| 一本到高清视频免费精品| 欧美电影一区二区三区| 国产清纯在线一区二区www| 亚洲免费在线看| 久久爱另类一区二区小说| www.亚洲免费av| 91精品综合久久久久久| 欧美国产欧美综合| 婷婷丁香久久五月婷婷| 国产ts人妖一区二区| 欧美日韩免费观看一区二区三区| 日韩一级片在线播放| 中文字幕综合网| 蜜桃在线一区二区三区| 91在线视频官网| 日韩精品一区二区三区四区 | 91麻豆精品国产91久久久| 久久精品视频在线免费观看| 亚洲国产cao| 丰满白嫩尤物一区二区| 在线播放亚洲一区| 1000部国产精品成人观看| 麻豆成人在线观看| 欧美日韩免费观看一区三区| 国产精品日日摸夜夜摸av| 日韩高清国产一区在线| 91丨九色porny丨蝌蚪| 日韩欧美黄色影院| 亚洲va天堂va国产va久| 久久国产剧场电影| 欧美中文字幕不卡| 国产目拍亚洲精品99久久精品| 日韩成人伦理电影在线观看| 成人aaaa免费全部观看| 精品国产一二三| 日韩在线卡一卡二| 欧美亚洲日本一区| 亚洲精品大片www| 91在线观看成人| 国产精品沙发午睡系列990531| 午夜精品一区二区三区免费视频|