亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

雙向鏈表---C++實現

2019-11-06 08:04:32
字體:
來源:轉載
供稿:網友

雙向鏈表在類中的實現

#include<stdio.h>#include<assert.h>#include<iostream>using namespace std;typedef int DataType;struct Node{	Node(const DataType& data)		: _pNext(NULL)		, _pPRe(NULL)		, _data(data)	{}	Node* _pNext;	Node* _pPre;	int _data;};class List{public:	explicit List()		:_pHead(NULL)		,_pTail(NULL)		,_size(0)	{}	List(const List& l)	{		Node* pTemp = l._pHead;		Node* pNode1 = new Node(pTemp->_data);   //創建一個新節點作為新鏈表的頭節點		Node* pNewTemp = pNode1;                //創建一個臨時變量指針指向新鏈表的頭節點		_pHead = pNode1;		size_t ret = l._size;		while(--ret)                            //循環里創建ret-1個節點		{			pTemp = pTemp->_pNext;			Node* pNode2 = new Node(pTemp->_data);  //復制l鏈表值為pTemp->_data的節點			pNewTemp->_pNext = pNode2;             //將新創建的節點與新鏈表連接起來			pNode2->_pPre = pNewTemp;			if(ret != 1)                          //判斷是否是最后一個節點,若不是,則臨時指針指向下一個節點			{				pNewTemp = pNewTemp->_pNext ;			}			else                                  //若是最后一個節點,則尾指針指向空			{				pNode2->_pNext = NULL;			}		}		_size = l._size;	}	List(size_t n, const DataType& data = DataType())	{		Node* pNode1 = new Node(data);		Node* pNewTemp = pNode1;		_pHead = pNode1;		size_t ret = n;		while(--ret)		{			Node* pNode2 = new Node(data);			pNewTemp->_pNext = pNode2;			pNode2->_pPre = pNewTemp;			if(ret != 1)			{				pNewTemp = pNewTemp->_pNext ;			}			else			{				pNode2->_pNext = NULL;			}		}		_size = n;	}	List& Operator=(const List& l)   //與拷貝構造函數類似	{		if(this != &l)		{			Node* pTemp = l._pHead;			Node* pNode1 = new Node(pTemp->_data);			Node* pNewTemp = pNode1;			_pHead = pNode1;			size_t ret = l._size;			while(--ret)			{				pTemp = pTemp->_pNext;				Node* pNode2 = new Node(pTemp->_data);				pNewTemp->_pNext = pNode2;				pNode2->_pPre = pNewTemp;				if(ret != 1)				{					pNewTemp = pNewTemp->_pNext ;				}				else				{					pNode2->_pNext = NULL;				}			}			_size = l._size;		}		return *this;	}	//////////Capacity///////////////////////	size_t Size()const	{		return _size;	}	size_t Empty()const	{		return (0==_size);	}	////////Acess///////////////////	Node& Front()	{		assert(_pHead);		return *_pHead;	}	const Node& Front()const	{		assert(_pHead);		return *_pHead;	}	Node& Back()	{		assert(_pHead);		Node* pTemp = _pHead;		while(--_size)		{			pTemp = pTemp->_pNext;		}		return *pTemp;	}	const Node& Back()const	{		assert(_pHead);		Node* pTemp = _pHead;		size_t ret = _size;		while(--ret)		{			pTemp = pTemp->_pNext;		}		return *pTemp;	}	////////////Modify/////////////////////////	void Assign(size_t n, const DataType& data)	{		Node* pTemp = _pHead;		Node* pNode1 = new Node(data);		Node* pNewTemp = pNode1;		_pHead = pNode1;		size_t ret = n;		while(--ret)		{			pTemp = pTemp->_pNext;			Node* pNode2 = new Node(data);			pNewTemp->_pNext = pNode2;			pNode2->_pPre = pNewTemp;			if(ret != 1)			{				pNewTemp = pNewTemp->_pNext ;			}			else			{				pNode2->_pNext = NULL;			}		}		_size = n;	}	void PushBack(const DataType& data)	{		Node* pNewNode = new Node(data);		if(NULL == _pHead)		{			_pHead = pNewNode;			pNewNode->_pNext = NULL;			pNewNode->_pPre = _pHead;			_size = _size+1;		}		else		{			Node* pTemp = _pHead;			size_t ret = _size;			while(--ret)			{				pTemp = pTemp->_pNext;			}			pTemp->_pNext = pNewNode;			pNewNode->_pPre = pTemp;			pNewNode->_pNext = NULL;			_size = _size+1;		}	}	void PopBack()	{		if(NULL == _pHead)//鏈表不存在		{			return;		}		if(1 == _size) //只有一個節點		{			delete _pHead;			_pHead = _pTail = NULL;			_size = 0;		}		else //多個節點		{			Node* pTemp = _pHead;			while(pTemp->_pNext)			{				pTemp = pTemp->_pNext;			}			_pTail = pTemp;			Node* pTemp1 = _pTail;			_pTail = _pTail->_pPre;			_pTail->_pNext = NULL;			delete pTemp1;			_size = _size-1;		}	}	void PushFront(const DataType& data)	{		Node* pNode = new Node(data);		if(NULL == _pHead)//鏈表沒有節點		{			_pHead = pNode;			_size = _size+1;		}		else//鏈表有一個或多個節點		{			Node* pTemp = _pHead;			_pHead = pNode;			pNode->_pNext = pTemp;			pTemp->_pPre = _pHead;			_size = _size+1;		}	}	void PopFront()	{		if(NULL == _pHead)  //鏈表沒有節點		{			return;		}		else if(1 == _size)//鏈表有一個節點		{			delete _pHead;			_pHead = _pTail = NULL;			_size = 0;		}		else              //鏈表有一個或多個節點		{			Node* pTemp = _pHead;     			_pHead = _pHead->_pNext;			_pHead->_pPre  = NULL;			delete pTemp;			_size = _size-1;		}	}	Node* Find(const DataType& data)	{		Node* pTemp = _pHead;		if(NULL == _pHead)		{			return NULL;		}		else		{			while(pTemp)			{				if(pTemp->_data == data)				{					return pTemp;				}				pTemp =pTemp->_pNext;			}			return NULL;		}			}	void Insert(Node* pos, const DataType& data)	{		if(NULL == pos)  //沒有該節點		{			return;		}		else if(pos->_pNext == NULL)   //該節點為尾結點		{			PushBack(data);		}		else                          //其他節點		{			Node* pNewNode = new Node(data);			pNewNode->_pNext = pos->_pNext ;			pos->_pNext->_pPre = pNewNode;			pos->_pNext = pNewNode;			pNewNode->_pPre = pos;			_size++;		}	}	void Erase(Node* pos)	{		if(NULL == pos)   //沒有該節點		{			return;		}		else if(pos->_pNext == NULL)    //該節點為尾結點		{			PopBack();		}		else                            //其他節點		{			Node* pTemp = pos;			pos->_pPre->_pNext = pos->_pNext;			pos->_pNext->_pPre = pos->_pPre;			delete pTemp;			_size = _size-1;		}	}	~List()	{		if(_pHead != NULL)		{			Node* pTemp = _pHead;				while(pTemp->_pNext)			{				pTemp = pTemp->_pNext;			}			_pTail = pTemp;			while((_pTail != _pHead)&&(_pTail!=NULL))			{				Node *pTemp = _pTail;				_pTail = _pTail->_pPre;				delete pTemp;			}			delete _pHead;			_pHead =_pTail = NULL;			_size = 0;		}	}private:	Node* _pHead;	Node* _pTail;	size_t _size;};void funtest(){	 List l1(5,10);	 List l2(l1);	 List l3;	 l3 = l1;	 l1.PushBack(5);	 l1.PopBack();	 l1.PushFront(1);	 l1.PopFront();	 l1.PushBack(3);	 Node *temp = l1.Find(3);	 l1.Insert(temp,1);	 l1.Erase(temp);	 l1.~List();}int main(){	funtest();	return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品国产成人在线| 亚洲一区二区三区毛片| 国产偷亚洲偷欧美偷精品| 亚洲精品网址在线观看| 亚洲国产精品va在看黑人| 一区二区三区回区在观看免费视频| 久久久国产精品免费| 亚洲电影在线观看| 日本不卡视频在线播放| 日韩av在线免费观看| 亚洲成色777777女色窝| 一本大道香蕉久在线播放29| 91精品在线观| 欧美激情在线有限公司| 日韩福利在线播放| 久久久久久国产精品久久| 久久久久中文字幕| 色av中文字幕一区| 91亚洲精华国产精华| 美女久久久久久久| 亚洲日本成人女熟在线观看| 亚洲精品日产aⅴ| 国产精品27p| 一区二区三区黄色| 欧美黄网免费在线观看| 亚洲一区二区国产| 亚洲美女av在线播放| 久久久久久国产免费| 国产精品视频一区二区高潮| 亚洲国产精品久久久久| 成人激情视频在线| 8050国产精品久久久久久| 亚洲欧美激情精品一区二区| 亚洲欧洲午夜一线一品| 久久久精品国产亚洲| 亚洲a中文字幕| 麻豆国产精品va在线观看不卡| 久久电影一区二区| 久久6免费高清热精品| 成人av番号网| 久久男人的天堂| 国产精品第100页| 日韩一区二区三区国产| 最近中文字幕mv在线一区二区三区四区| 影音先锋欧美在线资源| 91性高湖久久久久久久久_久久99| 中文字幕欧美视频在线| 久久久99免费视频| 国产精品一二区| 成人免费午夜电影| 亚洲国产成人精品女人久久久| 疯狂欧美牲乱大交777| 亚洲跨种族黑人xxx| 国产精品入口夜色视频大尺度| 国产成人福利网站| 欧美另类在线观看| 国产乱肥老妇国产一区二| 精品国产一区二区三区久久久狼| 亚洲一区二区三区毛片| 欧美韩国理论所午夜片917电影| 成人av电影天堂| 国产精品偷伦视频免费观看国产| 狠狠久久五月精品中文字幕| www.国产精品一二区| 蜜臀久久99精品久久久久久宅男| 国产精品69av| 欧美裸体xxxx极品少妇| 亚洲另类图片色| 欧美精品videosex牲欧美| 欧美中文字幕在线播放| 黑人极品videos精品欧美裸| 啪一啪鲁一鲁2019在线视频| 亚洲精品国精品久久99热| 国产91精品青草社区| 日韩高清电影免费观看完整| 91精品久久久久久久| 国语自产精品视频在线看抢先版图片| 久久中文字幕国产| 两个人的视频www国产精品| 久久亚洲国产成人| 国产欧美亚洲精品| 国产成人精品一区| 欧美高跟鞋交xxxxhd| 日韩在线视频网站| 国产精品wwwwww| 91久久国产综合久久91精品网站| 亚洲欧美国产日韩天堂区| 中文字幕视频在线免费欧美日韩综合在线看| 日韩中文在线中文网在线观看| 热久久免费国产视频| 久久精品国产亚洲精品| 亚洲欧美资源在线| 78m国产成人精品视频| 最近中文字幕日韩精品| 成人午夜在线视频一区| 久久久亚洲欧洲日产国码aⅴ| 日韩中文av在线| 欧美亚洲国产日韩2020| 成人久久18免费网站图片| 日韩高清av一区二区三区| 不卡中文字幕av| 91在线观看欧美日韩| 成人黄色激情网| 欧美日韩成人在线视频| 亚洲精品乱码久久久久久金桔影视| 久久久久久免费精品| 亚洲精品不卡在线| 欧美日韩午夜视频在线观看| 一区二区国产精品视频| 日韩免费黄色av| 久久中文精品视频| 亚洲色图偷窥自拍| 久久久亚洲国产| 国产亚洲精品91在线| 国产精品自拍视频| 亚洲国产99精品国自产| 91精品国产色综合| 久久夜精品va视频免费观看| 欧美日本亚洲视频| 欧美成人一区在线| 亚洲第一综合天堂另类专| 国产网站欧美日韩免费精品在线观看| 亚洲国产精品999| 欧美日韩亚洲网| 日韩国产高清视频在线| 亚洲最大的成人网| 精品国产31久久久久久| 色中色综合影院手机版在线观看| 97国产真实伦对白精彩视频8| 中文字幕欧美视频在线| 中文欧美在线视频| 久久久精品久久久久| 成人在线小视频| 欧美精品第一页在线播放| 欧美视频在线免费看| 国产精品欧美亚洲777777| 亚洲free性xxxx护士白浆| 国产做受高潮69| 国产精品高潮呻吟久久av野狼| 欧美激情第1页| 26uuu国产精品视频| 欧美亚洲一级片| 日韩视频欧美视频| 欧美中文字幕在线视频| 久久av红桃一区二区小说| 国产91热爆ts人妖在线| 国产精品扒开腿做爽爽爽男男| 国产成人自拍视频在线观看| 一区二区三区国产视频| 国产视频在线观看一区二区| 欧美一级大片在线观看| 狠狠躁夜夜躁人人爽天天天天97| 国产精品久久久久久久一区探花| 色婷婷综合久久久久| 国产欧美一区二区三区久久| 国产亚洲日本欧美韩国| 精品久久久久久久久久久久久| 亚洲日本中文字幕免费在线不卡| 国产精品高精视频免费| 精品无人区乱码1区2区3区在线| 一区二区三区四区视频| 久久天天躁狠狠躁老女人| 91网在线免费观看| 91在线视频导航|