Insertion Sort List 【leetcode】

来源:互联网 发布:晋江网店美工培训 编辑:程序博客网 时间:2024/05/18 03:07


今天面试第一个笔试通过的公司(去哪儿网),今天早上就空腹去检查胃,喝钡餐,还没吃东西,加上早起,晚上没睡好,最近几天压力大(失眠),精神紧张,面试的时候完全昏昏沉沉,没状态,结果一面就没过。下午写一个链表的插入排序也写了一下午,真是坑爹啊。

胃下垂还要多餐少吃,坑爹。


题目的意思是给你一个链表,让你排序,小的在前面大的在后面(题目你怎么不说啊),而且head这个元素本事 是有值的,就是说head->val等于某个值,而它不仅仅只是一个指针。


自己设置一个哨位节点来指向head,在进行排序

若前面的n个一直有序,我就跳过,到某一个不在有序了,我查找到它应该插入的位置,然后进行插入操作。


//============================================================================// Name        : sort_list.cpp// Author      : menglei// Version     :// Copyright   : Your copyright notice// Description : Hello World in C++, Ansi-style//============================================================================#include "stdafx.h"#include <iostream>using namespace std;struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(NULL) {}};void show(ListNode * h){while (h != NULL){cout << h->val << "->";h = h->next;}cout << endl;}//======================================================ListNode *insertionSortList(ListNode *head) {ListNode dummy(-1);//哨位dummy.next = head;if (dummy.next == NULL || dummy.next->next == NULL){return dummy.next;}ListNode* pre = dummy.next;ListNode * cur = pre->next;while (cur){if (pre->val <= cur->val){cur = cur->next;pre = pre->next;}else{ListNode *preinsert = &dummy;ListNode *insert = preinsert->next;while (insert->val < cur->val){insert = insert->next;preinsert = preinsert->next;}//insertpre->next = cur->next;cur->next = insert;preinsert->next = cur;cur = pre->next;}}return dummy.next;}//==========================================================int main() {ListNode *head;ListNode a(1);ListNode b(3);ListNode c(5);ListNode d(4);ListNode e(3);ListNode f(6);head = &a;a.next = &b;b.next = &c;c.next = &d;d.next = &e;e.next = &f;show(head);ListNode *t;t = insertionSortList(head);show(t);return 0;}


0 0
原创粉丝点击