插入排序:在已排好序的序列中,找到当前要排序元素的插入位置即可。如果我们对链表进行排序,我们只需要找到当前插入位置的前一个指针即可。然后当前元素向前移动一位。//对单向链表进行插入排序 #include<iostream> #include<random> using namespace std; //链表数据结构 struct ListNode { int val; ListNode *next; }; //在链表末尾追加元素 void appendTail(ListNode **pHead, int val) { ListNode *pNew = new ListNode; pNew->next = NULL; pNew->val = val; if (*pHead == NULL) { *pHead = pNew; } else { ListNode *tmp = *pHead; while (tmp->next) { tmp = tmp->next; } tmp->next = pNew; } } //正序输出链表 void show(ListNode *pHead) { while (pHead) { cout << pHead->val << " "; pHead = pHead->next; } cout << endl; } ListNode *insertionSortList(ListNode *head) { //如果链表为空,或者只有一个元素,直接返回即可 if (head == NULL || head->next == NULL) return head; //从链表的第二个元素开始遍历 ListN
链表进行插入排序
最新推荐文章于 2022-10-21 23:40:50 发布