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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? linkedset.h

?? 清華大學(xué)計(jì)算機(jī)系數(shù)據(jù)結(jié)構(gòu)課程教材《數(shù)據(jù)結(jié)構(gòu) 用面向?qū)ο蠓椒ê虲++描述》(殷人昆主編)的類庫(kù)(書中程序的源代碼)
?? H
字號(hào):
#ifndef LINKEDSET_H
#define LINKEDSET_H
template <class T>
struct SetNode {								//集合的結(jié)點(diǎn)類定義
	T data;										//每個(gè)成員的數(shù)據(jù)
	SetNode<T> *link;							//鏈接指針
	SetNode() : link(NULL){};					//構(gòu)造函數(shù)
	SetNode(const T& x, SetNode<T> *next = NULL) 
		: data(x), link(next){};			//構(gòu)造函數(shù)
};

template <class T>
class LinkedSet {								//集合的類定義
private:
	SetNode<T> *first, *last;					//有序鏈表表頭指針, 表尾指針
public:
	LinkedSet() {first = last = new SetNode<T>;}	//構(gòu)造函數(shù)
	LinkedSet(LinkedSet<T>& R);						//構(gòu)造函數(shù) 
	~LinkedSet() {makeEmpty();  delete first;}		//析構(gòu)函數(shù)
	void makeEmpty();								//置空集合
	bool addMember(const T& x);						//把新元素x加入到集合中
	bool delMember(const T& x);						//把集合中成員x刪去
	LinkedSet<T> operator + (LinkedSet<T>& R);		//求集合this與R的并
	LinkedSet<T> operator * (LinkedSet<T>& R);		//求集合this與R的交
	LinkedSet<T> operator - (LinkedSet<T>& R);		//求集合this與R的差
	bool Contains(const T x);						//判x是否集合的成員
	bool operator == (LinkedSet<T>& R);			//判集合this與R相等
	void show();  //輸出
};

template <class T>
LinkedSet<T>::LinkedSet(LinkedSet<T>& R) {			//復(fù)制構(gòu)造函數(shù)
	SetNode<T> *srcptr = R.first->link;			//源鏈表指針
	first = last = new SetNode<T>;					//創(chuàng)建附加頭結(jié)點(diǎn)
	while (srcptr != NULL) {						//逐個(gè)結(jié)點(diǎn)復(fù)制
		last->link = new SetNode<T>(srcptr->data);
		last = last->link;
		srcptr = srcptr->link;
	}
	last->link = NULL;
};
template <class T>
bool LinkedSet<T>::Contains(const T x) {
	//測(cè)試函數(shù): 如果x是集合的成員, 則函數(shù)返回true, 否則返回false。
	SetNode<T> *temp = first->link;						//鏈的掃描指針
	while (temp != NULL && temp->data < x) 				//循鏈搜索
		temp = temp->link;	
	if (temp != NULL && temp->data == x) return true;	//找到
	else return false;									//未找到
};

template <class T>
bool LinkedSet<T>::addMember(const T& x) {
	//把新元素x加入到集合之中。若集合中已有此元素, 則函數(shù)返回false, 否則函數(shù)返回true。
	SetNode<T> *p = first->link, *pre = first;	//p是掃描指針, pre是p的前驅(qū)
	while (p != NULL && p->data < x) 				//循鏈掃描
	{pre = p;  p = p->link;}		
	if (p != NULL && p->data == x) return false;	//集合中已有此元素
	SetNode<T> *s = new SetNode<T>(x);					//創(chuàng)建值為x的結(jié)點(diǎn)
	s->link = p;  pre->link = s;					//鏈入
	if (p == NULL) last = s;						//鏈到鏈尾時(shí)改鏈尾指針
	return true;
};

template <class T>
bool LinkedSet<T>::delMember(const T& x) {
	//把集合中成員x刪去。若集合不空且元素x在集合中, 則函數(shù)返回ture, 否則返回false。
	SetNode<T> *p = first->link,  *pre = first;
	while (p != NULL && p->data < x) 				//循鏈掃描
	{pre = p;  p = p->link;}		
	if (p != NULL && p->data == x) {				//找到,可以刪除結(jié)點(diǎn)p
		pre->link = p->link;						//重新鏈接,摘下p
		if (p == last) last = pre;					//刪去鏈尾時(shí)改鏈尾指針
		delete p;  return true;						//刪除含x結(jié)點(diǎn)
	}
	else return false;								//集合中無此元素
};

template <class T>
void LinkedSet<T>::makeEmpty()
{
	SetNode<T> *q;
	while (first->link != NULL) {
		q = first->link;              //保存被刪結(jié)點(diǎn)
		first->link = q->link;    //從鏈上摘下該結(jié)點(diǎn)
		delete q;		        //刪除
	}
};

template <class T>
void LinkedSet<T>::show()
{
	if(first->link != NULL)
	{
		cout<<"集合元素:";
		SetNode<T> *q = first->link;
		while (q != NULL) {
			cout<<q->data<<' ';
			q = q->link;              //保存被刪結(jié)點(diǎn)
		}
		cout<<endl;
	}
	else cout<<"空集合"<<endl;
};

template <class T>
LinkedSet<T> LinkedSet<T>::operator + (LinkedSet<T>& R) {
	//求集合this與集合R的并, 計(jì)算結(jié)果通過臨時(shí)集合temp返回,this集合與R集合不變。
	SetNode<T> *pb = R.first->link;					//R集合的鏈掃描指針
	SetNode<T> *pa = first->link;					//this集合的鏈掃描指針
	LinkedSet<T> temp;								//創(chuàng)建空結(jié)果鏈表
	SetNode<T> *p, *pc = temp.first;				//結(jié)果鏈的存放指針
	while (pa != NULL && pb != NULL) {				//兩鏈數(shù)據(jù)兩兩比較
		if (pa->data == pb->data) {					//兩集合共有元素
			pc->link = new SetNode<T>(pa->data);
			pa = pa->link;  pb = pb->link;
		}
		else if (pa->data < pb->data) {				//this中元素值小
			pc->link = new SetNode<T>(pa->data);
			pa = pa->link;
		} else {									//R集合中元素值小
			pc->link = new SetNode<T>(pb->data);
			pb = pb->link;
		}
		pc = pc->link;
	}
	if ( pa != NULL ) p = pa;						//this集合未掃完
	else p = pb;									//或R集合未掃完
	while (p != NULL) {								//向結(jié)果鏈逐個(gè)復(fù)制
		pc->link = new SetNode<T>(p->data);
		pc = pc->link;  p = p->link;
	}
	pc->link = NULL;  temp.last = pc;				//鏈表收尾
	return temp;
};

template <class T>
LinkedSet<T> LinkedSet<T>::operator * (LinkedSet<T>& R) {
	//求集合this與集合R的交, 計(jì)算結(jié)果通過臨時(shí)集合temp返回,this集合與R集合不變。
	SetNode<T> *pb = R.first->link;					//R集合的鏈掃描指針
	SetNode<T> *pa = first->link;					//this集合的鏈掃描指針
	LinkedSet<T> temp;
	SetNode<T> *pc = temp.first;					//結(jié)果鏈的存放指針
	while (pa != NULL && pb != NULL) {				//兩鏈數(shù)據(jù)兩兩比較
		if (pa->data == pb->data) {					//兩集合公有的元素
			pc->link = new SetNode<T>(pa->data);	//鏈入結(jié)果鏈表尾部
			pc = pc->link;
			pa = pa->link;  pb = pb->link;
		}
		else if (pa->data < pb->data) pa = pa->link;	//this集合元素值小
		else pb = pb->link;					//R集合中元素值小
	}
	pc->link = NULL;  temp.last = pc; 				//置鏈尾指針
	return temp;								
};

template <class T>
LinkedSet<T> LinkedSet<T>::operator - (LinkedSet<T>& R) {
	//求集合this與集合R的差, 計(jì)算結(jié)果通過臨時(shí)集合temp返回,this集合與R集合不變。
	SetNode<T> *pb = R.first->link;					//R集合鏈掃描指針
	SetNode<T> *pa = first->link;					//this集合鏈掃描指針
	LinkedSet<T> temp;
	SetNode<T> *pc = temp.first;					//結(jié)果鏈的存放指針
	while (pa != NULL && pb != NULL) {				//兩兩比較
		if (pa->data == pb->data)					//兩集合共有的元素
		{pa = pa->link;  pb = pb->link;}
		else if (pa->data < pb->data) {				//this集合值小, 保留
			pc->link = new SetNode<T>(pa->data);
			pc = pc->link;  pa = pa->link;
		}
		else pb = pb->link;							//不要,向前繼續(xù)檢測(cè)
	}
	while (pa != NULL) {							//向結(jié)果鏈逐個(gè)復(fù)制
		pc->link = new SetNode<T>(pa->data);
		pc = pc->link;  pa = pa->link;
	}
	pc->link = NULL;  temp.last = pc;				//鏈表收尾
	return temp;
}; 

template <class T>
bool LinkedSet<T>::operator == (LinkedSet<T>& R) {
	//當(dāng)且僅當(dāng)集合this與集合R相等時(shí), 函數(shù)返回true, 否則返回false。
	SetNode<T> *pb = R.first->link;					//R集合的鏈掃描指針
	SetNode<T> *pa = first->link;					//this集合的鏈掃描指針
	while (pa != NULL && pb != NULL)
		if (pa->data == pb->data)					//相等, 繼續(xù)檢測(cè)
		{pa = pa->link;  pb = pb->link;}
		else return false;							//掃描途中不等時(shí)退出
		if (pa != NULL || pb != NULL) return false;	//鏈不等長(zhǎng)時(shí),返回0
		return true;
};


#endif;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产青草久久久久福利| 欧美在线影院一区二区| 日韩视频永久免费| 热久久国产精品| 日韩欧美视频在线| 韩国精品主播一区二区在线观看 | 五月天激情小说综合| 在线不卡a资源高清| 狠狠网亚洲精品| 欧美经典三级视频一区二区三区| 成人精品国产一区二区4080| 日韩伦理电影网| 欧美日韩精品系列| 国产主播一区二区三区| 国产精品区一区二区三区| 色域天天综合网| 天天免费综合色| 国产午夜精品一区二区| 色综合天天天天做夜夜夜夜做| 亚洲午夜日本在线观看| 日韩欧美国产综合| 99久久精品国产毛片| 婷婷综合在线观看| 久久久久久久久久看片| 在线视频国内一区二区| 麻豆精品久久精品色综合| 国产精品你懂的在线欣赏| 欧美日韩高清一区| 国产91精品精华液一区二区三区| 亚洲欧美日韩国产中文在线| 日韩一区二区三区视频| 99久久精品国产观看| 捆绑调教美女网站视频一区| 成人欧美一区二区三区黑人麻豆| 欧美一区二区精品在线| 91在线看国产| 国产一区不卡精品| 午夜欧美电影在线观看| 中文字幕欧美一区| 精品精品欲导航| 欧美图区在线视频| 成人在线视频一区二区| 日本麻豆一区二区三区视频| 亚洲欧美色综合| 久久综合色8888| 久久色在线视频| 99在线视频精品| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲综合一二区| 国产欧美日韩亚州综合| 欧美日韩aaaaaa| 色老头久久综合| 成人涩涩免费视频| 久久精品国产久精国产爱| 亚洲一区二区三区在线播放| 中文字幕制服丝袜一区二区三区| 精品成人免费观看| 欧美一区二区三区在线| 日本高清视频一区二区| 不卡的电影网站| 国产成人综合在线观看| 精油按摩中文字幕久久| 青青草国产精品97视觉盛宴| 亚洲国产精品视频| 亚洲一区在线看| 亚洲欧美日韩久久精品| 最新欧美精品一区二区三区| 国产清纯在线一区二区www| 久久久久久一级片| 精品日韩欧美一区二区| 日韩午夜av一区| 日韩美女在线视频| 日韩美女在线视频| 日韩免费电影网站| 欧美岛国在线观看| 日韩欧美国产三级| 精品黑人一区二区三区久久| 精品美女在线播放| 久久精品视频一区二区| 久久久久久久久99精品| 精品成人免费观看| 国产视频一区在线观看 | 久久99国产精品成人| 久久成人羞羞网站| 国产一区在线看| 国产 欧美在线| 99国内精品久久| 色先锋aa成人| 欧美日韩一区在线观看| 欧美精品在欧美一区二区少妇| 91精品国产高清一区二区三区| 欧美一三区三区四区免费在线看 | 亚洲视频免费在线观看| 一区二区三区视频在线看| 亚洲在线成人精品| 天涯成人国产亚洲精品一区av| 欧美aⅴ一区二区三区视频| 精品一区二区三区久久| 成人一级视频在线观看| 色94色欧美sute亚洲线路一久| 欧美日韩成人高清| 久久影院电视剧免费观看| 国产精品久久久久久亚洲毛片| 亚洲另类春色国产| 天堂成人国产精品一区| 国产一区二区三区电影在线观看| 国产激情视频一区二区三区欧美| 91色porny| 欧美大胆一级视频| 国产精品成人一区二区三区夜夜夜| 亚洲久草在线视频| 经典三级在线一区| 99re这里只有精品视频首页| 欧美三级在线播放| 国产亚洲一区字幕| 亚洲一区二区三区在线| 国产一区 二区| 色拍拍在线精品视频8848| 日韩免费观看高清完整版在线观看| 国产精品女主播在线观看| 午夜欧美2019年伦理| 成人在线视频一区| 日韩一区二区免费电影| 中文字幕一区二区三区不卡| 日韩精品三区四区| 99在线视频精品| 久久综合网色—综合色88| 亚洲综合免费观看高清完整版| 国产资源在线一区| 777午夜精品视频在线播放| 国产精品久线在线观看| 激情av综合网| 欧美日韩三级一区| 亚洲丝袜精品丝袜在线| 国产在线播放一区三区四| 欧美亚洲动漫制服丝袜| 国产精品麻豆网站| 精一区二区三区| 欧美日韩久久不卡| 亚洲精品水蜜桃| 成人精品国产福利| 国产亚洲视频系列| 男人的天堂久久精品| 欧美无砖专区一中文字| 自拍偷拍亚洲综合| 国产不卡在线视频| 日韩欧美黄色影院| 日韩成人免费在线| 欧美视频在线播放| 亚洲最新视频在线观看| 99国产精品一区| 久久久久久99久久久精品网站| 日韩二区在线观看| 欧美女孩性生活视频| 亚洲综合久久av| 在线观看av一区| 一区二区三区四区在线播放| 成人福利视频网站| 国产精品狼人久久影院观看方式| 国产精品自拍网站| 久久蜜桃av一区二区天堂| 久久国产福利国产秒拍| 精品欧美一区二区在线观看| 日韩精品国产欧美| 欧美一区二区三区在线电影| 天天av天天翘天天综合网色鬼国产| 日本精品裸体写真集在线观看| 日韩美女久久久| 在线免费观看日本欧美| 亚洲一区在线观看视频| 欧美日韩免费高清一区色橹橹| 亚洲午夜久久久久久久久电影院| 在线观看免费亚洲| 五月综合激情日本mⅴ| 在线电影国产精品| 美国毛片一区二区三区| 欧美不卡激情三级在线观看| 国产在线精品视频| 国产精品视频一二| 色偷偷一区二区三区| 亚洲第一福利视频在线| 欧美日韩黄视频| 久久精品国产99国产| 26uuu亚洲综合色| 不卡一区二区三区四区| 一区二区三区欧美久久| 欧美欧美午夜aⅴ在线观看| 久久99久久精品欧美| 国产欧美精品国产国产专区 | 麻豆精品在线看| 久久蜜桃香蕉精品一区二区三区| 成人福利视频在线看| 亚洲精品久久久久久国产精华液| 欧美日韩一区三区四区| 久久99国产精品免费网站| 国产精品欧美久久久久无广告| 在线观看免费视频综合| 精品一区二区三区久久| 综合婷婷亚洲小说| 91麻豆精品国产自产在线观看一区|