当前位置: 首页 > news >正文

建正建设集团有限公司网站百度优化大师

建正建设集团有限公司网站,百度优化大师,外贸网站运营,大学生网页设计大赛作品LeetCode 147. 对链表进行插入排序 | C语言版LeetCode 147. 对链表进行插入排序题目描述解题思路思路一:使用栈代码实现运行结果参考文章:思路二:减少遍历节点数代码实现运行结果参考文章:[]()LeetCode 147. 对链表进行插入排序 …

LeetCode 147. 对链表进行插入排序 | C语言版

    • LeetCode 147. 对链表进行插入排序
      • 题目描述
      • 解题思路
        • 思路一:使用栈
          • 代码实现
          • 运行结果
          • 参考文章:
        • 思路二:减少遍历节点数
          • 代码实现
          • 运行结果
          • 参考文章:[]()

LeetCode 147. 对链表进行插入排序

题目描述

题目地址:147. 对链表进行插入排序
给定单个链表的头 head ,使用 插入排序 对链表进行排序,并返回 排序后链表的头 。

插入排序 算法的步骤:

插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。
每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。
重复直到所有输入数据插入完为止。
下面是插入排序算法的一个图形示例。部分排序的列表(黑色)最初只包含列表中的第一个元素。每次迭代时,从输入数据中删除一个元素(红色),并就地插入已排序的列表中。

对链表进行插入排序。

在这里插入图片描述

解题思路

思路一:使用栈

代码实现

c

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/struct ListNode* insertionSortList(struct ListNode* head){if(head==NULL) return head;//设置虚拟头结点struct ListNode* dummyHead=(struct ListNode*)malloc(sizeof(struct ListNode));dummyHead->next=NULL;//dummyHead->next=head;//当前节点(要插入的节点)curstruct ListNode* cur=head;struct ListNode* pre=dummyHead;//dummyHead->1(pre)->3->4->2(cur)->NULL(next)//如:插入节点2,操作如下while(cur!=NULL){//循环中值不小于当前值时候就需要插入当前值了while(pre->next!=NULL && pre->next->val<cur->val){pre=pre->next;}//在pre和next之间插入数据(2)struct ListNode* next=cur->next;//步骤一:保存cur的下一个节点next,因为本次循环结束后,要把当前节点移动到下一个节点cur->next=pre->next;//步骤二:cur(2)的指针域指向pre->next(3)pre->next=cur;//步骤三:pre(1)的指针域指向cur(2)pre=dummyHead;//步骤四:pre重新指向虚拟头节点来找下一个插入位置cur=next;//步骤五:cur(2)节点直接往后移动(到next)//dummyHead(pre)->1->2->3->4->NULL}return dummyHead->next;
}

C++

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* insertionSortList(ListNode* head) {if(head==NULL) return head;//设置虚拟头结点ListNode* dummyHead = new ListNode(0);//dummyHead->next=head;//当前节点(要插入的节点)curListNode* cur=head;ListNode* pre=dummyHead;//dummyHead->1(pre)->3->4->2(cur)->NULL(next)//如:插入节点2,操作如下while(cur!=NULL){//循环中值不小于当前值时候就需要插入当前值了while(pre->next!=NULL && pre->next->val<cur->val){pre=pre->next;}//在pre和next之间插入数据(2)ListNode* next=cur->next;//步骤一:保存cur的下一个节点next,因为本次循环结束后,要把当前节点移动到下一个节点cur->next=pre->next;//步骤二:cur(2)的指针域指向pre->next(3)pre->next=cur;//步骤三:pre(1)的指针域指向cur(2)pre=dummyHead;//步骤四:pre重新指向虚拟头节点来找下一个插入位置cur=next;//步骤五:cur(2)节点直接往后移动(到next)//dummyHead(pre)->1->2->3->4->NULL}return dummyHead->next;}
};
运行结果

在这里插入图片描述

参考文章:

https://leetcode.cn/problems/insertion-sort-list/solutions/491331/147-kao-cha-lian-biao-zong-he-cao-zuo-xiang-jie-by/?q=%E4%BB%A3%E7%A0%81&orderBy=most_relevant

思路二:减少遍历节点数

代码实现
在这里插入代码片
运行结果
参考文章:

在这里插入图片描述

http://www.mmbaike.com/news/73860.html

相关文章:

  • 咸宁网站建设网络公司关键词优化排名软件哪家好
  • 绮思网站建设qswooseo软件安卓版
  • 阿里巴巴国际站网站做销售方案seo网站平台
  • dedecms导入网站互联网营销模式有哪些
  • 做那事的网站智谋网站优化公司
  • 最专业网站建设哪家好厦门人才网招聘
  • 俄语免费网站制作免费建立个人网站凡科
  • 杭州市建设委员会官方网站百度热搜的含义
  • 什么网站可以做设计兼职如何让新网站被收录
  • 公司网站建设需求说明书什么是网络营销渠道
  • b2b电子商务交易模式网站的特点谷歌推广外包
  • 哪些网上可以赚钱的网站日本比分预测最新分析
  • 做网站如何可以实现窗口切换功能英文网站seo发展前景
  • 莱阳网站建设论文收录网站有哪些
  • 路由器做内部网站服务器百度官网优化
  • 匿名聊天网站怎么做网站排行榜前十名
  • 做智能网站软件下载千万别在百度上搜别人的名字
  • 桂林建设网站网络营销都具有哪些功能
  • 小说阅读网站开发视频未来网络营销的发展趋势
  • 网站建设有什么好的介绍seo外链
  • 无锡哪家网站做的好长尾关键词查询
  • 中山做展示型网站市场调研报告范文模板
  • 网站怎么做一盘优化排名职业技能培训有哪些
  • 泰安网站建设培训产品销售方案与营销策略
  • 三栏wordpress 主题seo常用工具包括
  • 用什么软件做介绍视频网站俄罗斯搜索引擎推广
  • 河南营销型网站建设semi是什么意思
  • 网站代理登录域名北京seo公司哪家好
  • 青岛做网站推广公司哪家好个人怎么做网站
  • 商城网站免费模板网站seo推广方案