1. 程式人生 > >資料結構-單鏈表交換節點

資料結構-單鏈表交換節點

普通情況的結點交換

					temp_pre->next = p;
					p_pre->next = p->next;//key step 
					p->next = temp->next;
					temp->next = p_pre->next;
					p_pre->next = temp;

過程 交換結點時一定要注意那個相鄰結點的情況,不然……

----相鄰結點使用一般情況

會出現大錯誤 在這裡插入圖片描述

相鄰結點單獨處理

					temp->next = p->next;
					p->next = temp;
					temp_pre->next = p;

具體程式碼如下(整體是一個選擇排序的演算法)

void sort_dec(book* head)
{
	book* temp_pre=head;
	book* p_pre = head;
	book* ex;
	//選擇排序
	for (book* temp = head->next; temp != NULL; temp = temp->next)
	{
		p_pre = temp;
		for (book* p = temp->next; p != NULL; p = p->next)
		{
			if (temp->price < p->price)
{ //下面的修改指標的交換方式 if (temp->next == p) //temp與p為相鄰結點 { temp->next = p->next; p->next = temp; temp_pre->next = p; } else //一般情況 { temp_pre->next = p; p_pre->next = p->next;//key step p->next = temp->
next; temp->next = p_pre->next; p_pre->next = temp; } ex = temp; temp = p; p = temp; } p_pre = p; } temp_pre = temp; } }