#include <iostream>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
//题目大意:实现链表的插入排序 由于链表是单向的,所以插入检测是从左到右检测插入元素
class Solution {
public:
ListNode *insertionSortList(ListNode *head) {
if(head == NULL || head-> next == NULL)
return head;
ListNode *iterator = head->next;
ListNode *prev = head;
ListNode *movement = head;
ListNode *temp = NULL;
while(iterator != NULL)
{
if(iterator->val < prev->val)
{
temp = iterator;
prev->next = iterator->next;
iterator = iterator->next;
if(head->val > temp->val)
{
temp->next = head;
head = temp;
continue;
}
movement = head;
while(movement->next->val < temp->val)
movement = movement->next;
temp->next = movement->next;
movement->next = temp;
}
else
{
prev = iterator;
iterator = iterator->next;
}
}
return head;
}
};
void print(ListNode * head)
{
while(head != NULL)
{
cout << head->val << " ";
head = head->next;
}
cout << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
ListNode a(3);
ListNode b(4);
ListNode c(1);
a.next = &b;
b.next = &c;
ListNode *head = &a;
Solution s;
head = s.insertionSortList(head);
print(head);
return 0;
}
leetcode Insertion Sort List
最新推荐文章于 2021-12-07 09:13:28 发布