欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

單鏈表的相關問題

#include<iostream>
using namespace std;
#include<assert.h>
template<class T>
struct Node
{
	int _data;
	Node* _next;
	Node(const T& x)
		:_data(x)
		, _next(NULL)
	{}
};

template<class T>
class PlinkList
{
public:
	PlinkList()
		:_head(NULL)
	{}
	void PushBack(const T& x)
	{
		if (_head == NULL)
		{
			_head = new Node<T>(x);
			_tail = _head;
		}
		else
		{
			Node<T>* tmp = new Node<T>(x);
			Node<T>* cur = _head;
			while (cur->_next)
			{
				cur = cur->_next;
			}
			tmp->_next = cur->_next;
			cur->_next = tmp;
			_tail = tmp;
		}
	}
	Node<T>* JosephusCycle(int k)//約瑟夫環(huán)問題
	{
		assert(_head);
		_tail->_next = _head;
		Node<T>* begin = _head;
		while (1)
		{
			if (begin->_next == begin)
				break;
			int count = k - 1;
			while (count-- > 0)
			{
				//del = begin;
				begin = begin->_next;
			}
			Node<T>* del = begin->_next;
			//swap(begin->_data, begin->_next->_data);
			begin->_next = del->_next;
			begin = begin->_next;
			delete del;
		}
		return begin;
	}
	void Find_comm(Node<T>* one, Node<T>* two)//找兩個已排好序鏈表的相同數(shù)
	{
		assert(one && two);
		Node<T>* cur1 = one;
		Node<T>* cur2 = two;
		while (cur1 && cur2)
		{
			if (cur1->_data > cur2->_data)
				cur2 = cur2->_next;
			else if (cur1->_data < cur2->_data)
				cur1 = cur1->_next;
			else
			{
				cout << cur1->_data << " ";
				cur1 = cur1->_next;
				cur2 = cur2->_next;
			}
		}
		cout << "not comm data" << endl;
	}
	Node<T>* Find_CenterNode() //查找鏈表的中間節(jié)點
	{
		assert(_head);
		Node<T>* slow = _head;
		Node<T>* fast = _head;
		while (fast && fast->_next)
		{
			slow = slow->_next;
			fast = fast->_next->_next;
		}
		return slow;
	}
	bool del_thelast_Knode(int pos)//刪除倒數(shù)第Pos個節(jié)點
	{
		int count = 0;
		Node<T>* cur = _head;
		while (cur)
		{
			cur = cur->_next;
			count++;
		}
		if (pos<0 || pos>count)
			return false;
		if (pos == count)//如果要刪除的為頭結點
		{
			Node<T>* del = _head;
			_head = _head->_next;
			delete del;
			return true;
		}
		/*else //采用快慢指針讓快指針先走pos步,慢指針再走
		{
			Node<T>* slow = _head;
			Node<T>* fast = _head;
			Node<T>* prev = _head;
			int k = 0;
			while (fast)
			{
				if (k >= pos)
				{
					prev = slow;
					slow = slow->_next;
				}
				fast = fast->_next;
				k++;
			}
			Node<T>* del = slow;
			prev->_next = del->_next;
			delete del;
			return true;
		}*/
		else  //也可走count-pos步并記錄該位置的前一個位置
		{
			count = count - pos ;
			int num = 0;
			Node<T>* prev = _head;
			Node<T>* tmp = prev;
			cur = _head;
			while (cur->_next)
			{
				if (num + 1 == count)
				{
					tmp = cur;
					cur = cur->_next;
					break;
				}
				cur = cur->_next;
				//prev = prev->_next;
				num++;
			}
			Node<T>* del = cur;
			tmp->_next = del->_next;
			delete del;
			return true;
		}
	}

	Node<T>* reverse()//逆置單鏈表
	{
		assert(_head);
		if (_head->_next == NULL)
			return _head;
		Node<T>* cur = _head;
		Node<T>* newHead = NULL;
		while (cur)
		{
			Node<T>* tmp = cur;
			cur = cur->_next;
			tmp->_next = newHead;
			newHead = tmp;
		}
		return newHead;
	}
	void PrintTailTohead(Node<T>* head)//從尾到頭打印單鏈表
	{
		if (head == NULL)
			return;
		else
		{
			PrintTailTohead(head->_next);
			cout << head->_data<<"->";
		}
	}
	void Display()
	{
		assert(_head);
		Node<T>* cur = _head;
		while (cur)
		{
			cout << cur->_data << "->";
			cur = cur->_next;
		}
		cout << "NULL" << endl;
	}

	void Bubble_sort()//鏈表的冒泡排序
	{
		assert(_head);
		Node<T>* prev = _head;
		Node<T>* end = NULL;
		while (prev->_next) //控制排序次數(shù)
		{
			Node<T>* tmp = _head;
			while (tmp->_next != end)//相鄰兩元素交換單趟排序
			{
				if (tmp->_data > tmp->_next->_data)
					swap(tmp->_data, tmp->_next->_data);
				tmp = tmp->_next;
			}
			end = tmp;
			prev = prev->_next;
		}
	}
	Node<T>* Quicksort(Node<T>* begin, Node<T>* end)
	{
		Node<T>* prev = begin;
		Node<T>* cur = begin->_next;
		int key = begin->_data;
		while (cur != end)
		{
			if (cur && cur->_data < key)
			{
				prev = prev->_next;
				if (prev->_data != cur->_data)
					swap(prev->_data, cur->_data);
			}
			cur = cur->_next;
		}
		swap(begin->_data, prev->_data);
		return prev;
	}
	void Quick_sort(Node<T>* begin, Node<T>* end)
	{
		if (begin != end)
		{
			Node<T>* tmp = Quicksort(begin, end);
			Quick_sort(begin, tmp);
			Quick_sort(tmp->_next, end);
		}
	}
	~PlinkList()
	{
		if (_head == NULL)
			return;
		Node<T>* cur = _head;
		while (cur)
		{
			Node<T>* del = cur;
			cur = cur->_next;
			delete del;
		}
		_head = NULL;
	}
public:
	Node<T>* _head;
	Node<T>* _tail;
};

//void Test()
//{
//	PlinkList<int> l;
//	l.PushBack(8);
//	l.PushBack(3);
//	l.PushBack(7);
//	l.PushBack(1);
//	l.PushBack(9);
//	l.PushBack(6);
//	l.PushBack(0);
//	l.PushBack(5);
//	//l.Display();
//	//l.Quick_sort(l._head, NULL);
//	//l.Bubble_sort();
//	//l._head=l.reverse();
//	//l.del_thelast_Knode(8);
//	//cout << l.Find_CenterNode()->_data << endl;
//	//l.PrintTailTohead(l._head);
//	//cout << "NULL" << endl;
//	cout<<l.JosephusCycle(3)->_data<<endl;
//	//l.Display();
//}

文章名稱:單鏈表的相關問題
本文網(wǎng)址:http://aaarwkj.com/article34/igsope.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設計公司、、品牌網(wǎng)站建設、網(wǎng)站設計公司網(wǎng)站制作、服務器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設
av毛片天堂在线观看| 国产精品一区2区3区| 欧美精品一区二区三区乱码| 大屁股白浆一区二区三区| 99国产精品热久久婷婷| 亚洲av成人免费在线| 六十路人妻一区二区三区| 国产午夜福利av在线麻豆| 亚洲中文字幕女同系列av专区| 国产成人亚洲精品乱码| 久久尤物av天堂日日综合| 最新日韩精品电影在线网| 国产精品一区二区三区国产| 中文精品字幕人妻熟女小妇| 麻豆视传媒短视频免费看| 香蕉视频欧美日韩国产| 精品国产一区二区av麻豆| 青青草成人免费在线公开视频| 欧美 日本国产一区| 婷婷人妻中文字幕在线| 精品少妇人妻av蜜桃| 欧美一区二区三区情色| 国产国产精品人在线观看| 蜜臀午夜精品视频在线观看| 中文字幕有码av海量| 天天操夜夜操白天操晚上操| 欧美一区二区三区日韩色| 六月综合激情丁香婷婷色| 免费在线av一区二区| 日韩精品专区在线影院重磅| 成年免费视频一区二区三区| 日本免费精品一区二区三区四区| 成人免费视频国产免费| 日本不卡不码高清免费| 麻豆视频传媒入口在线播放| 亚洲欧美精品一中文字幕| 欧美高清视频看片在线观看| 午夜在线精品福利视频 | 丝袜美腿亚洲综合一区| 亚洲欧洲中文字幕一区二区| 欧美久久久久综合一区|