1. 程式人生 > 其它 >27、【連結串列】按遞增次序輸出單鏈表(C++版)

27、【連結串列】按遞增次序輸出單鏈表(C++版)

技術標籤:演算法刷題連結串列資料結構演算法

題目描述

在這裡插入圖片描述

題目分析

按遞增次序輸出,需要三個關鍵步驟,第一步是初始化後查詢到最小值,第二步是刪除,第三步進行下一輪的初始化迭代。

程式碼實現

首先,遍歷查詢最小值,設定一個結點p和其前驅節點pre,先從頭結點後的第一個結點開始依次比較大小,pre指向第一個結點,p指向下一個節點,p不斷往後走,若後續結點有更小的值,便將此時的p賦值給pre,知道遍歷完p位置。
然後,刪除最小值結點,使用一個結點變數t進行實現。
最後,再進行初始化,再從頭開始依次遍歷,找到最小值,直到刪除完全部L中結點為止。

/*
typedef struct {
	int data;
	struct next*;
}LNode, LinkList*;
*/
void PrintMinSort(LinkList &L){ LNode *pre,*p,*t; while(head->next != NULL){ pre = head; p = head->next; while(p!=NULL){ if(pre->next->data > p->next->data) pre = p; p = p->next; } std::cout << pre->next->data << std::endl; t = pre-
>next; pre->next = t->next; free(t); } free(head); }

時間複雜度為O(n2),空間複雜度為O(1)。