Leetcode_Insertion Sort List
来源:互联网 发布:阿里云数据库备份 编辑:程序博客网 时间:2024/06/07 00:39
心得
这题调试了很久,要是笔试十分有可能写错,先做个笔记吧,应该还有更简短的写法
题目
Sort a linked list using insertion sort.
思路
1、链表遍历模拟插入排序的两层循环,外层循环控制长度,内层循环控制查找应该插入的位置
2、由于需要插入,故需要记录插入位置的前驱,同时特别要注意移动外层循环的指针
3、用了一点小技巧,用一个dump节点指向头,表示head的前驱
代码
class Solution {public: ListNode *insertionSortList(ListNode *head) { ListNode *p1,*p_pre,*q,*p2,*pre_p2,*q_pre; ListNode *dump = new ListNode(0); if(head==NULL || head->next==NULL ) return head; dump->next = head; pre_p2=head; p2 = head->next; p1= head; while(p2!=NULL) { q_pre=dump; q = dump->next; while(q!=p2 && q->val<p2->val) { q_pre = q; q = q->next; } if (q!=p2){//q->val>p2->value //first decompose pre_p2->next = p2->next; ListNode *temp = p2; p2 = p2->next; q_pre->next = temp; temp->next =q; }else { pre_p2 = p2; p2 = p2->next; } } return dump->next; } ListNode *input() { int x; ListNode *p,*head,*q; cin>>x; head = new ListNode(x); q=head; for (int i=1;i<2;i++) { cin>>x; p=new ListNode(x); q->next = p; q=q->next; } return head; } void output(ListNode *h) { while(h!=NULL){ cout<<h->val<<endl; h = h->next; } }};
0 0
- Leetcode_Insertion Sort List
- Leetcode_insertion-sort-list
- LeetCode_Insertion Sort List
- LeetCode_Insertion Sort List
- leetcode_Insertion Sort List
- list sort
- list sort
- Sort List
- Sort List
- list - sort
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- 天猫浏览型应用的CDN静态化架构演变
- struts2中action跳转到另一个action的方法
- SharePoint 2010 PowerShell 系列
- 学编程,你精通了么?
- linux中如何修改hostname
- Leetcode_Insertion Sort List
- 类对象的强制转化
- 【简单题】-CF-391B-word folding
- 启动oracle服务有三种方式
- CareerCup Find the ceiling value present in the BST of a given ke
- java 使用命令行查找注册表
- php几个函数
- SQL数据库中的临时表详解
- xml是被设计为存储、传输以及交换数据