對於這題,可以先遍歷一次,用佇列儲存遞增的奇數字指標,用棧儲存遞減的偶數字指標。
這兩個線性表輸出的將都是遞增的序列。那麼逐個比較兩個表的元素,然後小的先加入新鍊錶,即可得出答案。
例如:1->10->2->9->8->3->9->1
用佇列儲存1->2->8->9,再輸出將是1->2->8->9
用棧儲存10->9->3->1, 再輸出將是1->3->9->10
那麼得出答案1->1->2->3->8->9->9->10
listnode * handleit(queue& ltr, stack&rtl)else
return
p; }
listnode* sortlinkedlist(listnode*head)
else
isodd = !isodd;
head = head->next;
}//找出新的鏈頭
listnode* newhead =handleit(ltr, rtl);
listnode* p =newhead;
//對兩個線性表進行整合排序
while (!ltr.empty() || !rtl.empty())
else
if(rtl.empty())
else
p = p->next;
}p->next =nullptr;
return
newhead;
}
C語言 鍊錶排序
最近總結了一下針對只有頭結點的單鏈表進行排序的幾個簡單的方法。交換節點 插入排序,氣泡排序,簡單選擇排序 交換資料 快速排序 include include include 節點結構 struct node typedef struct node node,list 列印函式 void printl...
鍊錶 C 鍊錶建立 刪除 排序,合併
實現c 鍊錶的建立 刪除 排序 合併 保持單調不減 題目 建立鍊錶 對鍊錶進行排序 合併兩個排序的鍊錶 保持單調不減 合併思路 方法1 如果將兩鍊錶頭尾相接後再整體排序,複雜度太高。因此可以利用鍊錶已經排好序的特點進行逐步合併。用兩個指標p1 p2指向兩煉表頭結點head1 head2,並比較,顯然...
四 C 雙向鍊錶排序
建立乙個長度為n的帶頭結點的雙向鍊錶,使得該鍊錶中的資料元素遞增有序排列。必須使用雙向鍊錶完成,資料型別為整型。輸入第一行 雙向表的長度 第二行 鍊錶中的資料元素。輸出 輸出雙向鍊錶中的資料元素的值。樣例輸入 10 2 4 6 3 5 8 10 21 12 9樣例輸出 2 3 4 5 6 8 9 1...