当前位置: 首页 > 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.zhongyajixie.com/news/38109.html

相关文章:

  • 南京网站建设网站设计网站交易
  • 哈尔滨做设计和网站的公司培训机构有哪些
  • 手机网站的文本排版是怎么做的互联网营销培训班
  • 网站建设公司常州关键词搜索排名
  • 泰兴公司做网站免费二级域名平台
  • 武汉网站建设厦门seo公司
  • 做电商搜素材网站都是什么营业推广是什么意思
  • 切实加强网站建设360搜索引擎优化
  • 济源网站优化海外推广代理公司
  • 经营性网站备案怎么备案个人怎么在百度上打广告
  • 宁波做网站的哪个好深圳广告公司排名
  • 网站运行维护方案网页平台做个业务推广
  • 长春网站建设方案详细市场推广外包团队
  • php做网站答辩问题app网站推广平台
  • 网站建设毕业设计模板国外广告联盟平台
  • 河南省做网站的企业论坛推广怎么做
  • 做虚拟币网站需要什么手续贵阳搜索引擎排名推广
  • 动态网站建设 作业关于友谊的连接
  • 微网站制作价格网站seo课设
  • 南昌专业网站建设影视网站怎么优化关键词排名
  • 绿色学校网站模板seo顾问赚钱吗
  • 网站首页设计草图seo优化教学视频
  • 怎么删除网站的死链建站平台在线提交功能
  • 万网归一关键词优化报价推荐
  • 中国建设银行驻莫斯科网站by72777最新域名查询
  • 学校招办网站怎么做百度网站官网入口网址
  • 网站建设实训心得及收获培训学校招生方案
  • 钟楼做网站如何在百度上添加店铺的位置
  • 外贸网站建设是什么意思自己如何制作网页
  • seo自己做网站吗网络软文营销案例3篇