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

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

?? clist.cpp

?? 預產期的計算
?? CPP
字號:
#ifndef SCK_CLIST_CPP
#define SCK_CLIST_CPP
/////////////////////////////////////////////////////////////////////////////
// CList.cpp   雙向鏈表類標準C++的聲明及實現
// CopyRight(C)   1996,2008   TCSY 公司   圣誕節新版
// Pentium Working Room   ShanChengKun   2003.12.24   更新
/////////////////////////////////////////////////////////////////////////////

#define EMPTY_NODE		0							// 空節點,Del()返回
#define START_NODE		1							// 首節點,Del()標志
#define MIDDLE_NODE		2							// 中節點,Del()返回
#define LAST_NODE		3							// 尾節點,Del()標志
template<class T> class CList;						// 前置聲明的CList類

//-------------------------------------------------------------------------//

// 自定義的通用鏈表節點類,T為簡單數據類型
template<class T>									// 鏈表節點指針
class CNode
{
	friend class CList<T>;							// 友元.CList類
	long   no;										// 此節點的序號
	T      data;									// 此節點的數據
	CNode<T> *prior;								// 前驅節點指針
	CNode<T> *next;									// 后繼節點指針

public: // 不負責釋放由前驅后繼的節點指針所指向的內存

	CNode() {no = -1; prior = next = NULL;}			// 默認構造函數
	CNode(T& dat) {no = -1; data = dat; prior = next = NULL;}
	T GetData(void) {return data;}					// 獲取節點數據
	void SetData(T& dat) {data = dat;}				// 設置節點數據
};

//-------------------------------------------------------------------------//

// 自定義的通用鏈表類模板,T為簡單數據類型
template<class T>									// 數據雙向搜索
class CList
{
	long sum;										// 所有節點總數
	CNode<T> *start;								// 首節點的指針
	CNode<T> *last;									// 尾節點的指針
	CNode<T> *curr;									// 當前位置指針

public: // 向鏈首走=向上(向前),向鏈尾走=向下(向后)

	long Sum(void) {return sum;}					// 所有節點總數
	void Rewind(int w) {curr = (w ? last : start);}	// 0鏈首,1鏈尾
	T&   operator()(void) {return curr->data;}		// 引用當前節點
	long GetNth(void) {return (curr ? curr->no : -1);}// 取當前序號
	T&   operator[](long nth) {Seek(nth - curr->no); return curr->data;}

	CNode<T> *GetCurrPtr(void) {return curr;}		// 獲取當前指針
	bool SetCurrPtr(CNode<T> *ptr)
	{
		if(!curr || !ptr) return false;				// 設置當前指針
		curr = ptr; return true;
	}

	bool Prev(void)									// 移動到上一點
	{
		if(!curr || !curr->prior) return false;
		curr = curr->prior; return true;
	}
	bool Next(void)									// 移動到下一點
	{
		if(!curr || !curr->next) return false;
		curr = curr->next; return true;
	}

	CList() {sum = 0; start = last = curr = NULL;}	// 缺省構造函數
	CList(CList<T>& list);							// 拷貝構造函數
	CList(T& dat) {sum = 0; start = last = curr = NULL; Add(dat);}
	~CList() {Destroy();}							// 默認析構函數

	bool Add(T& dat);								// 尾追加為當前
	int  Del(int bSort = 0);						// 刪當前指向下
	bool Ins(T& dat, int bType, int bSort = 0);		// 當前前后插入
	void SortNo(void);								// 上點號起重編
	bool Seek(long num);							// -首向、+尾向
	void Destroy(void) {Rewind(1); while(Del());}	// 釋放鏈表節點

	CList<T>& operator = (CList<T>& list);			// 重置為一新鏈
	CList<T>& operator = (T& dat);					// 重置為單節點
	CList<T>& operator += (CList<T>& list);			// 尾部追加新鏈
	CList<T>& operator += (T& dat);					// 尾部追加節點

	// 鏈表相加操作函數、右加節點操作函數、左加節點操作函數
	friend CList<T> operator + (CList<T>& list1, CList<T>& list2);
	friend CList<T> operator + (CList<T>& list, T& dat);
	friend CList<T> operator + (T& dat, CList<T>& list);
};

//-------------------------------------------------------------------------//

// 鏈表類的復制拷貝構造函數(此函數必須準確無誤)
template<class T>
CList<T>::CList(CList<T>& list)
{
	sum = 0; start = last = curr = NULL;			// 注意這很重要
	if(!list.Sum()) return;							// 不拷貝空鏈表
	list.Rewind(0);									// 返回到鏈首點
	do {if(!Add(list())) break;} while(list.Next());// 遍歷整個鏈表
}

// 在尾部追加一個數據節點
template<class T>
bool CList<T>::Add(T& dat)
{
	CNode<T> *info = new CNode<T>(dat);				// 申請拷貝空間
	if(!info) return false;
	info->no = sum++;								// 置序號總數增
	if(last) {info->prior = last; last->next = info; last = curr = info;}
	else start = last = curr = info; return true;	// 尾加載新節點
}

// 刪除(空0、首1、中2、尾3)節點,默認不重排序號
template<class T>
int CList<T>::Del(int bSort)
{
	if(!curr) return EMPTY_NODE;					// 當前為空鏈表
	int nStyle = MIDDLE_NODE;						// 默認中間刪除
	CNode<T> *prior = curr->prior, *next = curr->next;
	if(prior) prior->next = next;
	else {start = next; nStyle = START_NODE;}		// 刪除的是首點
	if(next) next->prior = prior;
	else {last = prior; nStyle = LAST_NODE;}		// 刪除的是尾點
	delete curr; curr = (next ? next : prior);
	sum--; if(bSort) SortNo(); return nStyle;		// 返回刪除類型
}

// 在當前節點(0前/后1)插入,當前指向新點。默認不重排序號
template<class T>
bool CList<T>::Ins(T& dat, int bType, int bSort)
{
	if(curr == NULL) return Add(dat);				// 空則尾部追加
	CNode<T> *info = new CNode<T>(dat);				// 申請新點空間
	if(!info) return false;
	if(bType != 0)									// 在當前點之后
	{
		CNode<T> *&next = curr->next;				// 引用當前后繼
		info->prior = curr; info->next = next;
		if(next) next->prior = info; else last = info;
		curr = next = info;							// 分尾點和中點
	}
	else											// 在當前點之前
	{
		CNode<T> *&prior = curr->prior;				// 引用當前前驅
		info->prior = prior; info->next = curr;
		if(prior) prior->next = info; else start = info;
		curr = prior = info;						// 分首點和中點
	}
	sum++; if(bSort) SortNo(); return true;			// 增總數并返回
}

// 以當前首向一節點序號為基數,重新編號
template<class T>
void CList<T>::SortNo(void)
{
	if(!curr) return;								// 上點序號為基
	curr->no = curr->prior ? curr->prior->no + 1 : 0;
	CNode<T> *info = curr;							// 從當前點開始
	while(info->next)
	{
		info->next->no = info->no + 1;				// 依次重新編號
		info = info->next;							// 不移當前指針
	}
}

// (負=首向、正=尾向)移動當前指針|num|次
template<class T>
bool CList<T>::Seek(long num)
{
	long count = 0, number = (num >0 ? num : -num);	// 絕對移動次數
	CNode<T> *info = curr;
	while(info && count < number)					// 是否已經足夠
	{
		info = (num > 0 ? info->next : info->prior);// 尾向首向移動
		if(info) count++;
	}
	if(count != number) return false;				// 比較移動次數
	curr = info; return true;						// 當前指新位置
}

//-------------------------------------------------------------------------//

// 等號賦值函數=(置鏈為一新鏈)
template<class T>
CList<T>& CList<T>::operator = (CList<T>& list)
{
	if(&list == this) return *this;					// 不作自身拷貝
	Destroy(); if(!list.Sum()) return *this;		// 不拷貝空鏈表
	list.Rewind(0);									// 返回到首節點
	do {if(!Add(list())) break;} while(list.Next());// 遍歷整個鏈表
	return *this;									// 返回實例引用
}

// 等號賦值函數=(置鏈為單節點),無法感知dat為本身節點
template<class T>
inline CList<T>& CList<T>::operator = (T& dat)
{
	Destroy(); Add(dat); return *this;				// 清空追加節點
}

// 加等號賦值函數+=(尾部追加新鏈)
template<class T>
CList<T>& CList<T>::operator += (CList<T>& list)
{
	if(&list == this || !list.Sum()) return *this;	// 非自身不拷空
	list.Rewind(0);									// 返回到首節點
	do {if(!Add(list())) break;} while(list.Next());// 遍歷整個鏈表
	return *this;									// 返回實例引用
}

// 加等號賦值函數+=(尾部追加節點)
template<class T>
inline CList<T>& CList<T>::operator += (T& dat)
{
	Add(dat); return *this;							// 增加新單節點
}

//-------------------------------------------------------------------------//

// 鏈表相加操作函數
template<class T>
inline CList<T> operator + (CList<T>& list1, CList<T>& list2)
{
	CList temp(list1); temp += list2; return temp;	// 兩個鏈表相加
}

// 右加節點操作函數
template<class T>
inline CList<T> operator + (CList<T>& list, T& dat)
{
	CList temp(list); temp.Add(dat); return temp;	// 尾部追加節點
}

// 左加節點操作函數
template<class T>
inline CList<T> operator + (T& dat, CList<T>& list)
{
	CList temp(dat); temp += list; return temp;		// 采用+=運算符
}

/////////////////////////////////////////////////////////////////////////////
#endif // #ifndef SCK_CLIST_CPP

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91久久精品一区二区二区| 色屁屁一区二区| 亚洲第一二三四区| 久久久99精品免费观看不卡| 欧美日韩大陆一区二区| 97久久精品人人做人人爽50路| 麻豆成人综合网| 尤物在线观看一区| 亚洲一区二区三区视频在线播放| 欧美国产一区在线| 亚洲欧美一区二区视频| 中文字幕中文字幕中文字幕亚洲无线| 日韩精品一区二区三区视频播放| 欧美日韩一区中文字幕| 色婷婷国产精品| 日本丰满少妇一区二区三区| 国产69精品久久久久毛片| 国产美女精品一区二区三区| 国产精品亚洲一区二区三区妖精 | 91麻豆国产精品久久| 国产精品一级片| 国产成人午夜精品5599| 成人一区二区在线观看| eeuss鲁片一区二区三区| 91碰在线视频| 91精品国产美女浴室洗澡无遮挡| 欧美一卡二卡在线| 久久精品人人做人人爽人人| 亚洲精品视频观看| 蜜臀91精品一区二区三区| 国产在线播放一区二区三区| 丁香六月久久综合狠狠色| 9人人澡人人爽人人精品| 色婷婷精品久久二区二区蜜臀av| 欧美美女一区二区三区| 亚洲午夜视频在线观看| 日本不卡一区二区三区| 国产成人av一区| 欧美日韩国产综合一区二区| 久久久久久久综合日本| 一区二区高清免费观看影视大全| 亚洲大型综合色站| 成人在线视频首页| 欧美日韩国产区一| 亚洲国产成人自拍| 久久99精品国产91久久来源| 在线欧美小视频| 久久精品视频一区二区三区| 亚洲小说春色综合另类电影| 99久久777色| 国产亚洲美州欧州综合国| 亚洲444eee在线观看| 99久久久国产精品| 欧美激情一区二区三区不卡 | 欧美大白屁股肥臀xxxxxx| 亚洲视频你懂的| 成人午夜在线视频| 中文字幕一区二区三区不卡在线 | 日韩免费看的电影| 天天色 色综合| 日韩毛片精品高清免费| 国产成人精品综合在线观看| 日韩亚洲欧美成人一区| 亚洲r级在线视频| 91精品国产综合久久久久久漫画| 亚洲综合偷拍欧美一区色| 色婷婷综合久色| 亚洲欧美日韩国产综合在线 | 久久久久久久久久美女| 久久免费看少妇高潮| 成人午夜视频在线| 喷水一区二区三区| 亚洲乱码一区二区三区在线观看| 日韩一区二区三区四区五区六区| 成人激情视频网站| 免费看黄色91| 日日夜夜精品视频免费| 亚洲国产精品一区二区久久| 亚洲欧洲精品一区二区精品久久久| 精品嫩草影院久久| 欧美一级理论片| 在线观看91av| 欧美色综合网站| 色婷婷亚洲综合| av一二三不卡影片| 99久久精品一区二区| 北条麻妃国产九九精品视频| 国产999精品久久久久久绿帽| 国精产品一区一区三区mba视频| 美国一区二区三区在线播放| 丝袜亚洲另类丝袜在线| 夜夜爽夜夜爽精品视频| 亚洲香肠在线观看| 午夜激情久久久| 免费成人在线视频观看| 日产国产欧美视频一区精品| 亚洲国产精品久久一线不卡| 天天影视网天天综合色在线播放| 亚洲成人在线观看视频| 日韩综合小视频| 久久国产福利国产秒拍| 国产福利一区二区| 91在线视频网址| 91精品国产福利| 久久嫩草精品久久久精品| 成人免费视频在线观看| 亚洲国产中文字幕| 国内精品嫩模私拍在线| 成人免费视频网站在线观看| 欧美色网站导航| 久久久久99精品一区| 亚洲六月丁香色婷婷综合久久 | 精品夜夜嗨av一区二区三区| 波多野洁衣一区| 欧美一区二区不卡视频| 中文天堂在线一区| 日韩精品色哟哟| 色综合久久综合网97色综合| 91精品国产福利| 亚洲视频免费观看| 精品一区在线看| 欧美性猛交xxxx黑人交| 久久综合999| 亚洲永久精品大片| 成人美女在线视频| 日韩亚洲欧美中文三级| 夜夜嗨av一区二区三区| 国产成人8x视频一区二区| 欧美少妇性性性| 亚洲精品日韩专区silk | 欧美在线免费观看视频| 国产精品乱码人人做人人爱| 久久精品国产一区二区| 欧美日韩成人综合在线一区二区 | 一区二区三区国产精华| 成人一区在线观看| 国产欧美日韩中文久久| 韩国三级电影一区二区| 欧美日韩国产精选| 亚洲va国产va欧美va观看| 国产精品美女久久久久久久久 | 欧美日韩精品久久久| 亚洲最新在线观看| 日本韩国一区二区三区视频| 亚洲欧洲成人av每日更新| 国产精品一区二区免费不卡| 久久久另类综合| 国产剧情一区在线| 久久麻豆一区二区| 国产99精品视频| 亚洲欧美自拍偷拍色图| 色视频一区二区| 亚洲国产日韩精品| 日韩一区二区不卡| 精品在线视频一区| 久久精品视频免费| 久久久国产午夜精品| av一区二区三区黑人| 亚洲最新在线观看| 欧美一区日韩一区| 国产精品羞羞答答xxdd| 国产精品乱码人人做人人爱 | 日韩电影在线观看电影| 2024国产精品视频| 99久久99久久免费精品蜜臀| 亚洲1区2区3区视频| 久久久综合视频| 99视频一区二区| 午夜一区二区三区在线观看| 精品国内片67194| 一本大道久久a久久精品综合| 亚洲第一主播视频| 中文字幕不卡三区| 91精品国产美女浴室洗澡无遮挡| 狠狠色丁香久久婷婷综| 亚洲精品高清视频在线观看| 欧美精品一区二区三区一线天视频| 91视频国产资源| 国产成人综合在线| 一区二区三区四区乱视频| 国产91在线观看| 亚洲国产精品av| aaa国产一区| 亚洲一区在线观看视频| 欧美一级高清片| 国产一区二区精品在线观看| 国产欧美日韩视频在线观看| jizz一区二区| 国内成人精品2018免费看| 国产一区二区三区四| 国产99精品视频| 欧美综合亚洲图片综合区| 欧美性一区二区| 日韩一区二区三区三四区视频在线观看| 欧美精品1区2区3区| 精品国精品自拍自在线| 国产精品亲子伦对白| 亚洲永久免费视频| 加勒比av一区二区| 99久久精品免费|