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

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

?? fifo.h

?? Socket異步通信示程序代 - Socket異步通信...
?? H
?? 第 1 頁 / 共 2 頁
字號:

/* * * * * * * * * * * * * * * * *
 *  ·(0)                        *
 *    ↖             調用點      *
 * Head  ☉0 ←——☉o         *
 *        ↖↘     ︱            *
 *           ☉1   ︱            *
 *            ↖↘ ↓            *
 *               ☉2             *
 *             Tail ↘           *
 *                    ·(0)      *
 * * * * * * * * * * * * * * * * */

class CFifo
{
protected:
	CFifo* m_t[2];
	int   m_nSize;
public:
	CFifo(int nSize=0)
	{ 
		m_t[0] = 0;
		m_t[1] = 0;
		m_nSize = nSize;
	}
	virtual ~CFifo()
	{
		Clear(get_r());
	}
public:
	CFifo* cut(CFifo* o,bool& bSucc,bool bHead = true)
	{
		CFifo* oRtn = cut(get_r(),o,bSucc,bHead);
		return oRtn;
	}
	CFifo* del(CFifo* o,bool& bSucc,bool bHead = true)
	{
		CFifo* oRtn = cut(o,bSucc,bHead);
		try{delete o;}catch(...){}
		return oRtn;
	}
	CFifo* cut(CFifo* o,bool bHead = true)
	{	bool bSucc;  //調用上一函數;
		return cut(o,bSucc,bHead);
	}
	CFifo* del(CFifo* o,bool bHead = true)
	{	bool bSucc;  //調用上一函數;
		return del(o,bSucc,bHead);
	}

	void Clear()
	{
		Clear(get_r());
	}
	int  GetSize()
	{
		if(!this)  return 0;
		return m_nSize;
	}
	bool bHasNode()	//只有調用點才可以調用該函數;
	{
		if(!this)  return false;
		return ( *get_r() )? true : false;  //%/·先結合! 再結合&&或||;如:if(!a && !b)
	}
	CFifo* Next (bool bHead= true)
	{
		if(!this)  return 0;
		CFifo** _r = m_t;  //必須使用基類指針!
		return  bHead ? (*(_r+1)) : (*(_r+0));
	}
	CFifo* GetFirst(bool bHead= true)
	{
		return GetFirst(get_r(),bHead);
	}
	CFifo* rpush(CFifo* o)
	{
		return rpush( get_r(),o );
	}
	CFifo* lpush(CFifo* o)
	{
		return lpush( get_r(),o );
	}
	CFifo* rpush(int nSize=0)
	{
		return rpush( get_r(),new CFifo(nSize) );
	}
	CFifo* lpush(int nSize=0)
	{
		return lpush( get_r(),new CFifo(nSize) );
	}
	//%/返回參數判斷是否有效:
	CFifo* lpop()
	{
		CFifo* o = lpop(get_r());
		return o;
	}
	//%/返回參數判斷是否有效:
	CFifo* rpop()
	{
		CFifo* o = rpop(get_r());
		return o;
	}
	//%/返回參數判斷是否有效:
	bool lpop(int& nSize)
	{
		CFifo* o = lpop(get_r());
		if(o==0)  { nSize=-1;  return false;}
		nSize = o->m_nSize;    
		delete   o;
		return  true;
	}
	//%/返回參數判斷是否有效:
	bool rpop(int& nSize)
	{
		CFifo* o = rpop(get_r());
		if(o==0)  { nSize=-1;  return false;}
		nSize = o->m_nSize;	
		delete   o;
		return  true;
	}
	int  GetvSize()
	{
		if(!this)  {return 0;}
		return m_nSize;
	}
	void SetvSize(int  nSize)	//注:僅非樹狀隊列的子節點可調用!
	{
		if(!this)  { return;}
		m_nSize = nSize;
	}

	int CalSize()
	{ //將從最末層節點向根層節點以統計的方式返回;
		int  all = 1;
		if( m_nSize>0 )
		{
			CFifo* q = GetFirst();  //派生類最終調用的仍然是基類函數;
			for(int i=0;i<m_nSize;i++)
			{
				all += q->CalSize();
				q = q->Next();
			}
		}
		return all;
	}
protected:
	virtual CFifo**  get_r() //獲取子樹指針;
	{
		if(!this) return 0;
		return m_t;
	}
	CFifo*  GetFirst(CFifo** _r, bool bHead= true)
	{
		if(!this)  return 0;
		return !bHead ? (*(_r+1)) : (*(_r+0));
	}
	CFifo*  rpush(CFifo** _r, CFifo* o) //%/參數使用new操作符;
	{
		if( (*(_r+1)) )
		{
			o->m_t[0] = (*(_r+1));
			(*(_r+1))->m_t[1] = o;
		}
		else
		if(!(*(_r+0)) )
			(*(_r+0))  = o;
		(*(_r+1))    = o;
		m_nSize++;
		return (*(_r+1));
	}
	CFifo*  lpush(CFifo** _r, CFifo* o) //%/參數使用new操作符;
	{
		if( (*(_r+0)) )
		{
			o->m_t[1] = (*(_r+0));
			(*(_r+0))->m_t[0] = o;
		}
		else
		if(!(*(_r+1)) )
			(*(_r+1))  = o;
		(*(_r+0))    = o;
		m_nSize++;
		return (*(_r+0));
	}
	CFifo*  lpop(CFifo** _r)
	{
		if( (*(_r+0)) )
		{
			CFifo* o = (*(_r+0));
			if( (*(_r+0))->m_t[1] )
			{
				(*(_r+0)) = (*(_r+0))->m_t[1];
				(*(_r+0))->m_t[0] =    0;
			}
			else
			{
				(*(_r+0)) = 0;
				(*(_r+1)) = 0;
			} 
			o->m_t[1]= 0;
			m_nSize--;

			return   o; //%/delete   o;
		}	return   0;
	}
	CFifo*  rpop(CFifo** _r)
	{
		if( (*(_r+1)) )
		{
			CFifo* o = (*(_r+1));
			if( (*(_r+1))->m_t[0] )
			{
				(*(_r+1)) = (*(_r+1))->m_t[0];
				(*(_r+1))->m_t[1] =    0;
			}
			else
			{
				(*(_r+0)) = 0;
				(*(_r+1)) = 0;
			} 
			o->m_t[0]= 0;
			m_nSize--;

			return   o; //%/delete   o;
		}	return   0;
	}
	CFifo*  cut(CFifo** _r, CFifo* o,bool& bSucc,bool bHead = true)  //參數:bHead = true,表示正向訪問;
	{
		//如果是正向訪問,返回其前一個節點;如果是逆向訪問,返回其后一個節點;
		CFifo* oRtn = 0;
		bSucc = true;
		if(!this||o==this||o==0)
		{
			bSucc = false;
			return oRtn;
		}

		if( o!=(*(_r+0))&&o!=(*(_r+1)) )
		{
			if(o->m_t[0]&&o->m_t[1])
			{
				oRtn = bHead? o->m_t[0] : o->m_t[1];
				o->m_t[0]->m_t[1] = o->m_t[1];
				o->m_t[1]->m_t[0] = o->m_t[0];
				o->m_t[0] = 0;o->m_t[1] = 0;
				m_nSize--;  //減計數器;
			} 
			else bSucc = false;
		}
		else
		if( o==(*(_r+0)) )
		{
			CFifo* oT = o->m_t[1];
			lpop(_r); //只有一個點時,彈出后,(*(_r+1))指針會被修改;
			oRtn = bHead? (*(_r+1)) : oT;
		}//首;
		else
		if( o==(*(_r+1)) )
		{
			CFifo* oH = o->m_t[0];
			rpop(_r); //只有一個點時,彈出后,(*(_r+0))指針會被修改;
			oRtn = bHead? oH : (*(_r+0));
		}//尾;
		return oRtn;
	}
	virtual void  Clear(CFifo** _r)
	{
		if( this&&(*(_r+0)) )
		{
			CFifo* p,* q = (*(_r+0));
			while( q )
			{
				p = q;
				q = q->m_t[1];
				p->m_t[0] = 0;delete p;
			} 
			(*(_r+0)) = 0;
			(*(_r+1)) = 0;
			m_nSize = 0;
		}
	}
	virtual void  Clear_OrElse(CFifo** _r)  //刪除值域可按本函數遍歷順序來執行;
	{
		if( this&&(*(_r+1)) )
		{
			CFifo* p,* q = (*(_r+1));
			while( q )
			{
				p = q;
				q = q->m_t[0];
				p->m_t[1] = 0;delete p;
			} 
			(*(_r+0)) = 0;
			(*(_r+1)) = 0;
			m_nSize = 0;
		} 
	}

};

//int     CFifo::CalSize() //%/為其派生類-樹型堆棧使用;
//CFifo** CFifo::get_r()
//CFifo*  CFifo::GetFirst(CFifo** _r, bool bHead)
//CFifo*  CFifo::rpush(CFifo** _r, CFifo* o) //%/參數使用new操作符;
//CFifo*  CFifo::lpush(CFifo** _r, CFifo* o) //%/參數使用new操作符;
//CFifo*  CFifo::lpop(CFifo** _r)
//CFifo*  CFifo::rpop(CFifo** _r)
//CFifo*  CFifo::cut(CFifo** _r, CFifo* o,bool& bSucc,bool bHead)  //參數:bHead = true,表示正向訪問;
//void    CFifo::Clear(CFifo** _r)
//void    CFifo::Clear_OrElse(CFifo** _r)  //刪除值域可按本函數遍歷順序來執行;



//#include "Fifo.h"
template<class Tx>
class CFifoX : public CFifo
{
protected:
  Tx m_X;
public:
  CFifoX(int nSize=0) : CFifo(nSize)
  {
    //m_X = X;	//缺省參數有可能類型不匹配;
  }
  CFifoX(Tx X,int nSize=0) : CFifo(nSize)
  {
    m_X = X;
  }
  ~CFifoX()
  {
    try
    {
    }
    catch(...)
    {
    }

    Clear();
  }

  void pClear() //%/指針型值域,對象在Clear-函數前調用;
  {
    //%/if(this)  delete ((CFifoX*)this)->m_X;
    if( this&&GetFirst() ) //%/原始為:(*(_r+1));
    {
      CFifo* p,* q = GetFirst(); //%/原始為:(*(_r+1));
      while( q )
      {
        p = q;
        q = q->Next(); //%/原始為:q = q->m_t[0];
        delete ((CFifoX*)p)->m_X;
      } 
    } 
  }

	CFifoX* Find(const Tx X)
	{
		CFifoX* q = GetFirst();
		for(int i=0;i<m_nSize;i++)
		{
			if(q->m_X==X)  return q;
			q = q->Next();
		}
		return 0;
	}
	CFifoX* Find(const Tx X,int& index)
	{	index = -1;
		CFifoX* q = GetFirst();
		for(int i=0;i<m_nSize;i++)
		{
			if(q->m_X==X)  {index = i;return q};
			q = q->Next();
		}
		return 0;
	}

  CFifoX* GetFirst(bool bHead= true)
  {
    return (CFifoX*)CFifo::GetFirst(bHead);
  }
  CFifoX* Next (bool bHead= true)
  {
    return (CFifoX*)CFifo::Next (bHead);
  }

  void rpush(CFifoX* o)	//注:參數是new對象;
  {
    (CFifoX*)CFifo::rpush( o );
  }
  void lpush(CFifoX* o)	//注:參數是new對象;
  {
    (CFifoX*)CFifo::lpush( o );
  }

  CFifoX* rpush()
  {
    return (CFifoX*)CFifo::rpush( new CFifoX(0) );
  }
  CFifoX* lpush()
  {
    return (CFifoX*)CFifo::lpush( new CFifoX(0) );
  }

  CFifoX* rpush(Tx X,int nSize=0)
  {
    return (CFifoX*)CFifo::rpush( new CFifoX(X,nSize) );
  }
  CFifoX* lpush(Tx X,int nSize=0)
  {
    return (CFifoX*)CFifo::lpush( new CFifoX(X,nSize) );
  }
  CFifoX* lpop()
  {
    return (CFifoX*)CFifo::lpop();
  }
  CFifoX* rpop()
  {
    return (CFifoX*)CFifo::rpop();
  }

  Tx* GetpValue()
  {
    if(!this)  { return 0;}
    return &m_X;
  }
  void GetpValue(Tx*& pX,int& nSize)
  {
    pX = GetpValue();
    CFifo::GetValue(nSize);
  }
  Tx GetValue()
  {
    return m_X;
  }
  void GetValue(Tx& X,int& nSize)
  {
    Tx = GetValue();
    CFifo::GetValue(nSize);
  }

  void SetValue(Tx  X)
  {
    if(!this)  { return;}
    m_X      = X;
  }
  void SetValue(Tx  X,int  nSize)
  {
    SetValue(X);
    CFifo::SetValue(nSize);
  }
  void SetValX(Tx  X)
  {
    if(!this)  { return;}
    m_X      = X;
  }
  Tx GetValX()
  {
    return m_X;
  }


};



template<class Tx,class Ty>
class CFifoY : public CFifoX<Tx>
{
protected:
  Ty m_Y;
public:
  CFifoY(int nSize=0) : CFifoX<Tx>(nSize)
  {
    //m_Y = Y;	//缺省參數有可能類型不匹配;
  }
  CFifoY(Tx X,int nSize=0) : CFifoX<Tx>(X,nSize)
  {
    //m_Y = Y;	//缺省參數有可能類型不匹配;
  }
  CFifoY(Tx X,Ty Y,int nSize=0) : CFifoX<Tx>(X,nSize)
  {
    m_Y = Y;
  }
  ~CFifoY()
  {
    try
    {
    }
    catch(...)
    {
    }

    Clear();
  }

  void pClearX() //%/指針型值域,對象在Clear-函數前調用;
  {
    CFifoX::pClear();
  }
  void pClearY() //%/指針型值域,對象在Clear-函數前調用;
  {
    //%/if(this) delete ((CFifoY*)this)->m_Y;
    if( this&&GetFirst() ) //%/原始為:(*(_r+1));
    {
      CFifo* p,* q = GetFirst(); //%/原始為:(*(_r+1));
      while( q )
      {
        p = q;
        q = q->Next(); //%/原始為:q = q->m_t[0];
        delete ((CFifoY*)p)->m_Y;
      } 
    } 
  }
  void pClear() //%/指針型值域,對象在Clear-函數前調用;
  {
    pClearX();
    pClearY();
  }

	CFifoY* Find(const Tx X,const Ty Y,bool bXorY = true)
	{
		CFifoY* q = GetFirst();
		for(int i=0;i<m_nSize;i++)
		{
			if( bXorY&&q->m_X==X || !bXorY&&q->m_Y==Y)	return q;
			q = q->Next();
		}
		return 0;
	}
	CFifoY* Find(const Tx X,const Ty Y,int& index,bool bXorY = true)
	{	index = -1;
		CFifoY* q = GetFirst();
		for(int i=0;i<m_nSize;i++)
		{
			if( bXorY&&q->m_X==X || !bXorY&&q->m_Y==Y)  {index=i;return q;}
			q = q->Next();
		}
		return 0;
	}

  CFifoY* GetFirst(bool bHead= true)
  {
    return (CFifoY*)CFifo::GetFirst(bHead);
  }
  CFifoY* Next (bool bHead= true)
  {
    return (CFifoY*)CFifo::Next (bHead);
  }

  void rpush(CFifoY* o)	//注:參數是new對象;
  {
    (CFifoY*)CFifo::rpush( o );
  }
  void lpush(CFifoY* o)	//注:參數是new對象;
  {
    (CFifoY*)CFifo::lpush( o );
  }

  CFifoY* lpush(int nSize=0)
  {
    return (CFifoY*)CFifo::lpush( new CFifoY(nSize) );
  }
  CFifoY* rpush(int nSize=0)
  {
    return (CFifoY*)CFifo::rpush( new CFifoY(nSize) );
  }

  CFifoY* lpush(Tx X,int nSize=0)
  {
    return (CFifoY*)CFifo::lpush( new CFifoY(X,nSize) );
  }
  CFifoY* rpush(Tx X,int nSize=0)
  {
    return (CFifoY*)CFifo::rpush( new CFifoY(X,nSize) );
  }
  CFifoY* lpush(Tx X,Ty Y,int nSize=0)
  {
    return (CFifoY*)CFifo::lpush( new CFifoY(X,Y,nSize) );
  }
  CFifoY* rpush(Tx X,Ty Y,int nSize=0)
  {
    return (CFifoY*)CFifo::rpush( new CFifoY(X,Y,nSize) );
  }
  CFifoY* lpop()
  {
    return (CFifoY*)CFifo::lpop();
  }
  CFifoY* rpop()
  {
    return (CFifoY*)CFifo::rpop();
  }

  void SetValX(Tx  X)
  {
    CFifoX<Tx>::SetValX(X);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品91久久久中77777| 日日摸夜夜添夜夜添国产精品 | 精品999在线播放| 91在线看国产| 国内不卡的二区三区中文字幕| 亚洲欧美另类久久久精品2019| 精品裸体舞一区二区三区| 欧美日韩一区二区在线视频| 波多野洁衣一区| jiyouzz国产精品久久| 宅男噜噜噜66一区二区66| 欧亚一区二区三区| 在线影视一区二区三区| 久久综合色一综合色88| 久久久久久影视| 国产精品青草久久| 国产精品白丝在线| 一区二区三区四区在线播放| 亚洲精品va在线观看| 一级做a爱片久久| 成人av免费在线播放| 97se亚洲国产综合自在线不卡| 日韩精品一区二区三区在线观看 | 亚洲综合久久久| 亚洲bt欧美bt精品777| 日韩和欧美的一区| 欧美婷婷六月丁香综合色| 欧美三级电影在线观看| 亚洲免费观看在线观看| 99v久久综合狠狠综合久久| 2014亚洲片线观看视频免费| 男人的天堂久久精品| 国产一区二区剧情av在线| 国产精品亚洲一区二区三区在线| 99久久综合色| 中文字幕中文在线不卡住| 成人美女在线观看| 在线综合视频播放| 亚洲高清免费观看高清完整版在线观看| 三级久久三级久久久| 欧美日韩一本到| 日本网站在线观看一区二区三区 | 国产亚洲一本大道中文在线| 亚洲同性同志一二三专区| 日韩 欧美一区二区三区| 日韩一区二区三区电影| 亚洲欧美另类在线| 欧美三级一区二区| 奇米影视在线99精品| 日韩欧美国产系列| 国产高清精品久久久久| 777xxx欧美| 国产在线一区观看| 国产精品色婷婷| 91福利在线观看| 天天色 色综合| 色伊人久久综合中文字幕| 欧美成人精精品一区二区频| 日韩av高清在线观看| 精品日韩成人av| 成人午夜激情视频| 亚洲一区二区视频| 欧美电影影音先锋| 亚洲一区二区在线视频| 日韩欧美成人激情| 99九九99九九九视频精品| 亚洲一区在线视频观看| 精品乱人伦小说| 欧洲生活片亚洲生活在线观看| 日韩av高清在线观看| 欧美激情在线一区二区| 国产自产v一区二区三区c| 综合久久久久久久| 日韩三级免费观看| 成人一区二区三区视频在线观看| 樱花草国产18久久久久| 日韩精品中文字幕在线一区| 99麻豆久久久国产精品免费| 日本一道高清亚洲日美韩| 中文天堂在线一区| 在线不卡中文字幕| eeuss鲁片一区二区三区在线观看| 亚洲电影一级黄| 国产精品少妇自拍| 9191精品国产综合久久久久久| 成人白浆超碰人人人人| 免费在线观看日韩欧美| 亚洲另类春色校园小说| 久久久美女艺术照精彩视频福利播放| 欧美综合在线视频| 成人美女在线观看| 国产在线精品一区二区三区不卡| 亚洲一区二区三区四区五区黄 | 亚洲男人天堂av| 久久久三级国产网站| 欧美日本一区二区在线观看| 婷婷六月综合网| 亚洲女人的天堂| 亚洲国产精品99久久久久久久久| 精品免费视频一区二区| 91超碰这里只有精品国产| 色综合久久综合| 成人国产一区二区三区精品| 国内精品免费在线观看| 日本中文一区二区三区| 亚洲国产婷婷综合在线精品| 亚洲色图色小说| 国产精品美女久久久久aⅴ| 日韩欧美亚洲国产另类| 欧美女孩性生活视频| 日本高清视频一区二区| 色女孩综合影院| 日本电影欧美片| 日本韩国欧美三级| 在线免费观看视频一区| 91在线视频18| 91农村精品一区二区在线| 午夜精品免费在线| 亚洲成人免费视| 午夜欧美在线一二页| 亚洲国产精品久久人人爱蜜臀| 亚洲国产日日夜夜| 亚洲福利电影网| 免费观看在线综合色| 美女被吸乳得到大胸91| 中文字幕日韩精品一区| 欧美一区二区三区精品| 成年人国产精品| 色婷婷激情综合| 欧美猛男gaygay网站| 欧美顶级少妇做爰| 久久久久久久综合日本| 国产日韩精品视频一区| 69久久夜色精品国产69蝌蚪网| 欧美一区二区三区免费| 久久久久久久久蜜桃| 国产精品视频麻豆| 亚洲成人在线免费| 久久99久国产精品黄毛片色诱| 亚洲人成亚洲人成在线观看图片 | 亚洲丰满少妇videoshd| 天天操天天色综合| 国产大陆亚洲精品国产| av不卡在线播放| 欧美老肥妇做.爰bbww视频| 91精品国产综合久久久蜜臀粉嫩| 精品国精品国产| 中文字幕欧美国产| 亚洲电影一级片| 国产福利一区二区三区视频| 99精品欧美一区二区蜜桃免费| 欧美日韩国产精品自在自线| 精品粉嫩超白一线天av| 中文字幕日韩欧美一区二区三区| 午夜激情一区二区三区| 国产高清无密码一区二区三区| 在线视频综合导航| 久久亚洲精品小早川怜子| 亚洲同性gay激情无套| 日韩国产成人精品| caoporm超碰国产精品| 337p亚洲精品色噜噜| 国产精品久久久99| 久久精品国产亚洲aⅴ| 蜜臀久久久99精品久久久久久| 国产91精品在线观看| 激情六月婷婷久久| 在线精品观看国产| 国产精品丝袜一区| 美女高潮久久久| 欧美日韩久久久久久| 中文字幕免费观看一区| 麻豆一区二区在线| 日本道在线观看一区二区| 国产三级一区二区三区| 天天操天天色综合| 色婷婷av一区二区| 中文一区在线播放| 极品少妇一区二区| 3d成人h动漫网站入口| 亚洲精品视频自拍| 成人午夜电影小说| 精品国产网站在线观看| 亚洲国产综合色| 91老司机福利 在线| 久久精品视频一区| 久久国产生活片100| 欧美人牲a欧美精品| 一区二区三区精品在线| av男人天堂一区| 国产精品水嫩水嫩| 国产69精品久久久久毛片| 日韩视频免费观看高清完整版在线观看 | 在线国产亚洲欧美| 亚洲人成亚洲人成在线观看图片| 国产精品一区二区免费不卡| 欧美xxxx老人做受| 久久丁香综合五月国产三级网站| 欧美精品在线观看播放| 亚洲国产精品久久人人爱蜜臀|