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

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

?? 程序15.1:單鏈表.cpp

?? mfc動態鏈接庫介紹程序
?? CPP
字號:
/******程序15.1:單鏈表.cpp******/
#include <iostream>
#include <string>
using namespace std;

class Information
{
private:
	string sName;		//姓名
	string sPhone;		//電話
	string sMobile;		//手機
	string sEmail;		//郵箱
public:
	Information(string sName)	//用來從鍵盤讀數據信息
	{
		cout<<"\n****** 輸入《"<<sName<<"》信息 ******\n";
		this->sName=sName;
		cout<<"   電話號碼  : ";
		cin>>sPhone;
		cout<<"   手機號碼  : ";
		cin>>sMobile;
		cout<<"   電子信箱  : ";
		cin>>sEmail;
		cout<<"****** 輸入《"<<sName<<"》完畢 ******\n";
	}
	void Display()				//顯示個人數據信息
	{
		cout<<"\n****** 顯示《"<<sName<<"》信息 ******\n";
		cout << "   電話是  :" << sPhone << endl;
		cout << "   手機是  :" << sMobile << endl;
		cout << "   郵箱是  :" << sEmail << endl;
		cout<<"****** 顯示《"<<sName<<"》完畢 ******\n";
	}
	bool CmpKey(string str)		//在鏈表中查找相關數據
	{
		if(str==sName) 
			return true;
		if(str==sPhone) 
			return true;
		if(str==sMobile) 
			return true;
		if(str==sEmail) 
			return true;
		return false;
	}
	void Modify()				//修改節點數據信息
	{
		do
		{
		cout << "\n******《修改通訊錄信息》******\n";
		cout << "1. 姓名是  :" << sName << endl;
		cout << "2. 電話是  :" << sPhone << endl;
		cout << "3. 手機是  :" << sMobile << endl;
		cout << "4. 郵箱是  :" << sEmail << endl << endl;
		int iChoice;
		cout << "   選擇要修改項目的編號(1—4) : " << endl;
		cout << "   按任意其它鍵退出修改, 輸入 : " ;
		cin >> iChoice;
			switch(iChoice)
			{
			case 1:
				cout << "   輸入修改后的姓名  : ";
				cin >> sName;
				break;
			case 2:
				cout << "   輸入修改后的電話  : ";
				cin >> sPhone;
				break;
			case 3:
				cout << "   輸入修改后的手機  : ";
				cin >> sMobile;
				break;
			case 5:
				cout << "   輸入修改后的郵箱  : ";
				cin >> sEmail;
				break;
			default:
				break;
			}
			if(iChoice>=1&&iChoice<=5)
			{
			cout<<"   還要繼續修改其它選項嗎(y/n): ";
			char cChoice;
			cin >> cChoice;
			if(cChoice=='y'||cChoice=='Y')
				continue;
			else
				{
				cout << "******《修改通訊錄完畢》******\n";
				break;		
				}
			}
		}while(1);
	}
	string GetName()		//用于訪問私有成員變量sName
	{
		return sName;
	}
	string GetPhone()		//用于訪問私有成員變量sPhone
	{
		return sPhone;
	}
	string GetMobile()		//用于訪問私有成員變量sMobile
	{
		return sMobile;
	}
	string GetEmail()		//用于訪問私有成員變量sEmail
	{
		return sEmail;
	}
};

class Node
{
public:
	string str;				//節點標識名稱
	Information INFO;		//節點數據 
	Node *NEXT;				//指向下一節點的節點指針(NEXT) 
	Node(string str,Node *NEXT=NULL):INFO(str)
	{
		this->str=str;
		this->NEXT=NEXT;
	}
	void Modify(string str)
	{
		cout<<"   當前節點str為 : "<<str<<endl;		
		cout<<"   輸入修改后的str : ";
		cin >> str;		
	}
};

class List					//定義一個List類
{
private:
	Node*	Start;			//表頭指針,固定在表頭
	Node*	Curr;			//當前遍歷位置指針
	Node*	Prev;			//當前位置的前節點指針
	Node*	End;			//表尾指針,固定在表尾
	int		iPosition;		//當前節點在表中的位置序號
public:
	List()					//構造符函數
	{
		Start=Curr=Prev=End=NULL;
		iPosition=1;
	}
	~List()					//析造符函數
	{
		while(Start!=NULL)
		{
			Curr=Start;
			Start=Start->NEXT;
			delete Curr;
		}
	}
	void AddNode(string str);	//增加節點
	void Modify(string str);	//修改節點
	void Traverse();			//遍歷鏈表(瀏覽所有節點信息)
	void QueryNode(string str);	//查詢節點(按照關鍵字查找符合條件的節點)
	void DelNode(string str);	//刪除當前節點
	void RowOrder();			//鏈表按字母順序排序
};

void List::AddNode(string str)	//按字母順序增加節點到相應的位置
{					
	Node *n=new Node(str);
	if(Start==NULL)				//條件成立,創建新鏈表的第一個節點
	{
		n->NEXT=NULL;			//新建節點為鏈表的第一個節點
		Start=n;					
		End=n;
		cout << "\n   創建鏈表的第一個節點完畢!!! " << endl;
		return;					//函數返回,不再向下執行
	}
	if(str<=Start->str)			//條件成立,將節點增加到表頭
	{
		n->NEXT=Start;			//新建節點作為表頭
		Start=n;
		cout << "\n   增加鏈表節點到表頭完畢!!! " << endl;
		return;					//函數返回,不再向下執行
	}
	Prev=Start;					//Prev指針初始化到表頭
	Curr=Prev->NEXT;			//Cur指針初始化到表頭
	while(Curr!=NULL)			//使用循環查找插入節點位置
	{
		if(str>Prev->str && str<=Curr->str)
		{
			n->NEXT=Curr;		//新建節點NEXT=Curr
			Prev->NEXT=n;		//新建節點在Prev之后Curr之前
			cout << "\n   增加鏈表節點到表中完畢!!! " << endl;
			return;				//函數返回,不再向下執行
		}
		Prev=Curr;				//后移Prev指針
		Curr=Prev->NEXT;		//后移Cur指針
	}
	Prev->NEXT=n;
	End=n;						//新建節點為表尾
	cout << "\n   增加鏈表節點到表尾完畢!!! " << endl;
}

void List::Modify(string str)
{
	for(Curr=Start;Curr!=NULL;Curr=Curr->NEXT)
	{
	   if(str==Curr->str)
	   {
		   Curr->Modify(str);	//修改節點str	 	   
	   }
	   if(Curr->INFO.CmpKey(str))
	   {
		   Curr->INFO.Modify();	//修改節點數據	   
	   }
	}
	if(Curr=NULL)
		cout << "\n   查詢完畢,沒有查詢到相關信息!!! " << endl;
}

void List::Traverse()			//遍歷鏈表(瀏覽所有節點信息)
{
	if(Start==NULL)
	{
		cout << "\n   鏈表不存在!!! " << endl;
	}
	else
	{
		iPosition=1;
		cout<<"\n   顯示鏈表信息: " << endl;
		for(Curr=Start;Curr!=NULL;Curr=Curr->NEXT)
		{							//循環顯示所有節點信息
			cout<<iPosition++<<". ";	//顯示節點序號
			cout<<Curr->str<<endl;	//顯示節點標識
		}
		cout << "\n   鏈表遍歷完畢!!! " << endl;
	}
}

void List::QueryNode(string str)	//查詢節點(按照關鍵字查找符合條件的節點)
{
	for(Curr=Start;Curr!=NULL;Curr=Curr->NEXT)
	{
	   if(str==Curr->str||Curr->INFO.CmpKey(str))
	   {
			cout<<"\n   查詢到一個相關節點,顯示如下: "<<endl;
			Curr->INFO.Display();		//顯示節點信息全部
			cout<<"\n   繼續查詢下一個相關節點嗎(y/n): ";	
			char ch;
			cin>>ch;
			if(ch=='y'||ch=='Y')
				continue;
			else
				cout << "\n   查詢完畢!!! " << endl;
				return;
	   }
	}
	if(Curr==NULL)
		cout << "\n   查詢完畢,沒有查詢到相關信息!!! " << endl;
}

void List::DelNode(string str)			//刪除當前節點
{
	for(Prev=Curr=Start;Curr!=NULL;Prev=Curr,Curr=Prev->NEXT)
	{
		if(str==Curr->str||Curr->INFO.CmpKey(str))
		{
			Curr->INFO.Display();		//顯示節點全部信息
			cout << "\n   確實要刪除當前節點嗎?(y/n) : ";
			char ch;
			cin >> ch;
			if(ch=='y'||ch=='Y')
			{
				Prev->NEXT=Curr->NEXT;	//刪除當前節點
				if(Curr==Start)
				{
				   Start=Start->NEXT;
				}
				delete Curr;
				cout << "\n   刪除鏈表當前節點完畢!!! " << endl;
				return;
			}
		}
	}
	cout << "\n   瀏覽完畢,未發現相關節點!!! " << endl;
}

void List::RowOrder()		//鏈表按字母順序排序
{
	if(Start==NULL)
	{
		cout << "\n   鏈表不存在!!! " << endl;
	}
	else
	{
		Prev=Start;
		Curr=Start->NEXT;
		while(Curr!=NULL) 
		{
			if(Prev->str > Curr->str)
			{
				Node *Temp;
				Temp=Prev;
				Prev=Curr;
				Curr=Temp;
				Prev=Start;
				Curr=Start->NEXT;
				continue;
			}
			Prev=Curr;
			Curr=Curr->NEXT;			
		}
		cout << "\n   鏈表按字母順序排序完畢!!! " << endl;
	}
}

int main()
{
	List listObj;
	string strObj;			//聲明節點標識變量
	cout << "************************《通 訊 錄 程 序》************************"<< endl;
	char cCmd;
	do
	{
	cout << "\n 增加(A)  修改(M)  遍歷(T)  查詢(Q)  刪除(D)  排序(R)  退出(X): ";
	cin >> cCmd;
	switch(cCmd)
	{
		case 'a':
		case 'A':
		{
			cout<<"\n   輸入姓名 : ";
			cin>>strObj;
			listObj.AddNode(strObj);
			break;
		}
		case 'm':
		case 'M':
		{
			cout<<"\n   輸入修改節點關鍵字(姓名/電話/手機/郵箱) : ";
			cin>>strObj;
			listObj.Modify(strObj);
			break;
		}
		case 't':
		case 'T':
		{
			listObj.Traverse();
			break;
		}
		case 'q':
		case 'Q':
		{
			cout<<"\n   輸入查詢節點關鍵字(姓名/電話/手機/郵箱) : ";
			cin>>strObj;
			listObj.QueryNode(strObj);
			break;
		}
		case 'd':
		case 'D':
		{
			cout<<"\n   輸入刪除節點關鍵字(姓名/電話/手機/郵箱) : ";
			cin>>strObj;
			listObj.DelNode(strObj);
			break;
		}
		case 'r':
		case 'R':
		{
			listObj.RowOrder();
			break;
		}
		case 'x':
		case 'X':
		{
			cout<<"\n  ***********《操作完畢,感謝您使用宋振會軟件工作室產品》*********** \n"<<endl;	
			break;	
		}
		default:
			cout << "\n   輸入錯誤,重新選擇菜單 : ";
	}
	}while(cCmd!='x' && cCmd!='X' );
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产精品中文字幕| 欧美日韩免费视频| 国产精品天干天干在观线 | 精品国产一区二区在线观看| 国产综合色视频| 国产精品久久久久久亚洲伦| 91亚洲精品一区二区乱码| 亚洲免费在线观看| 欧美不卡在线视频| 91美女片黄在线观看91美女| 日韩电影一区二区三区| 欧美国产精品专区| 色婷婷综合激情| 国产精品自拍三区| 免费成人在线观看| 一级日本不卡的影视| 日本一区二区三区视频视频| 成人爱爱电影网址| 久久精品国产亚洲aⅴ| 亚洲国产一区二区视频| 久久免费看少妇高潮| 欧美日韩aaaaaa| 国产资源精品在线观看| 日韩精品一级中文字幕精品视频免费观看 | 亚洲成av人在线观看| 日韩一区欧美一区| 欧美视频一区二区三区| 99热在这里有精品免费| 国产麻豆成人精品| 麻豆91在线观看| 天天亚洲美女在线视频| 中文字幕一区二区不卡| 国产欧美日韩久久| 国产日韩视频一区二区三区| 欧美性受xxxx黑人xyx| 色88888久久久久久影院野外| 国产精品一区免费视频| 国产精品99久久久| 国产精品996| 国产成人免费在线| 91高清在线观看| 久久夜色精品一区| 亚洲欧美另类久久久精品2019| 有坂深雪av一区二区精品| 午夜精品福利一区二区三区av | 国产在线观看一区二区| 国产成人亚洲精品青草天美| 在线免费观看不卡av| 精品国产乱码久久久久久久| 国产精品国产三级国产| 亚洲成在人线免费| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 蜜臀精品一区二区三区在线观看| 国产suv精品一区二区三区| 在线一区二区三区| 中文无字幕一区二区三区| 亚洲一区二区av电影| 99视频国产精品| 精品久久久网站| 视频一区视频二区中文字幕| 成人h动漫精品| 久久久久久久综合色一本| 亚洲一卡二卡三卡四卡无卡久久| 国产一区二区看久久| 日韩精品一区二区在线观看| 亚洲综合色丁香婷婷六月图片| 国产91清纯白嫩初高中在线观看 | 免费国产亚洲视频| 欧美吻胸吃奶大尺度电影| 亚洲欧美日韩国产手机在线| 国产露脸91国语对白| 日韩一区二区电影网| 日韩成人精品视频| 7777精品伊人久久久大香线蕉超级流畅| 亚洲啪啪综合av一区二区三区| 国产麻豆欧美日韩一区| 久久久久久电影| 国产91清纯白嫩初高中在线观看| 欧美精品一区二区高清在线观看| 狠狠网亚洲精品| 精品嫩草影院久久| 国产福利不卡视频| 欧美激情在线一区二区| 91啪亚洲精品| 亚洲国产日日夜夜| 欧美videos大乳护士334| 国产精品综合久久| 亚洲视频1区2区| 欧美日本国产视频| 国产又粗又猛又爽又黄91精品| 精品国产一区二区三区不卡 | 亚洲国产综合人成综合网站| 亚洲综合在线免费观看| 91在线视频播放地址| 亚洲成人久久影院| 欧美精品一区二区久久婷婷| 白白色亚洲国产精品| 亚洲一区二区三区国产| 欧美精品一区男女天堂| 99这里只有精品| 日本在线不卡视频| 国产精品毛片久久久久久久| 欧美亚洲另类激情小说| 丁香六月久久综合狠狠色| 亚洲国产日韩精品| 亚洲国产精品黑人久久久| 7777精品伊人久久久大香线蕉| 久久精品999| 亚洲第一激情av| 中文久久乱码一区二区| 欧美一级午夜免费电影| 欧美年轻男男videosbes| 欧美96一区二区免费视频| 亚洲日本在线天堂| 国产色91在线| 久久精品视频在线免费观看| 欧美精品一卡两卡| 国产成人av一区二区三区在线观看| 色哟哟精品一区| 久久新电视剧免费观看| 国产精品中文字幕日韩精品| 亚洲国产电影在线观看| 久久美女高清视频| 欧美电影精品一区二区| 69堂亚洲精品首页| 一本色道久久综合精品竹菊| 成人午夜电影久久影院| 激情久久五月天| 九九热在线视频观看这里只有精品| 国产区在线观看成人精品| 5566中文字幕一区二区电影| 色av成人天堂桃色av| 91欧美一区二区| 99久久精品一区| 99riav久久精品riav| 色呦呦国产精品| 一本久道中文字幕精品亚洲嫩| 成人av午夜电影| 99视频精品全部免费在线| 色94色欧美sute亚洲线路二| 97久久精品人人做人人爽50路| 99re热这里只有精品免费视频| 99麻豆久久久国产精品免费| 色综合久久中文综合久久牛| 欧洲视频一区二区| 一本高清dvd不卡在线观看| 91国在线观看| 久久久99久久| 亚洲免费在线电影| 天堂成人免费av电影一区| 久久se这里有精品| 91色.com| 欧美电影免费提供在线观看| 久久久五月婷婷| 亚洲视频免费看| 久久国产成人午夜av影院| 成人app软件下载大全免费| 欧美日韩一区小说| 欧美美女网站色| 国产精品久久久99| 美脚の诱脚舐め脚责91| 成人黄动漫网站免费app| 色综合天天天天做夜夜夜夜做| 欧美日韩国产欧美日美国产精品| 久久在线免费观看| 亚洲欧美电影院| 国产在线一区观看| 91久久人澡人人添人人爽欧美| 欧美va在线播放| 亚洲6080在线| 欧美日韩一区二区在线观看| 精品国产91久久久久久久妲己 | 91极品视觉盛宴| 亚洲天堂福利av| 国产精品自在欧美一区| 欧美一区二区精美| 一区二区在线观看av| 成人午夜av在线| wwww国产精品欧美| 激情亚洲综合在线| 久久久久久97三级| 国产成人aaa| 久久精品一区蜜桃臀影院| 国产东北露脸精品视频| 久久精品日产第一区二区三区高清版 | 国产精品网站导航| 成人综合在线视频| 中文字幕乱码日本亚洲一区二区 | 欧美一区二区三区思思人| 亚洲风情在线资源站| 精品视频在线视频| 日韩高清在线观看| 日韩免费观看高清完整版在线观看| 日本成人中文字幕在线视频| 欧美日韩国产123区| 亚洲午夜一二三区视频| 欧美精品久久天天躁| 国产一区二区三区黄视频| 中文字幕精品三区| av不卡在线播放|