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

大连网站建设短期培训班百度推广外包哪家不错

大连网站建设短期培训班,百度推广外包哪家不错,MAKA网站做H5怎么压缩图片,公司企业简历模板全文目录引言分隔链表题目描述与思路实现总结引言 前面,我们熟悉了管理链表中的数据的方法,也了解了几道与链表相关的题目: 戳我看单链表详解哦 在本篇文章中,我们将再了解一道题目:分隔链表: 分隔链表OJ…

全文目录

  • 引言
  • 分隔链表
    • 题目描述与思路
    • 实现
  • 总结

引言

前面,我们熟悉了管理链表中的数据的方法,也了解了几道与链表相关的题目:
戳我看单链表详解哦

在本篇文章中,我们将再了解一道题目:分隔链表:
分隔链表OJ链接

分隔链表

题目描述与思路

在这里插入图片描述
这道题要求我们实现将一个点链表中,val大于等于x的结点与val小于x的结点分隔:小于x的结点在大于x的结点前。并且原链表中的数据顺序不能发生改变。
即,若链表数据为1、4、3、2、5、2,x=3时,分隔后的链表为:1、2、2、4、3、5。

输入两个参数:链表的首结点地址head与分隔标准x。结构体变量与主函数部分已经定义,我们只需要实现接口即可。

不难想到,只要遍历整个链表,然后将val小于x的结点尾插到一个链表中,将val大于等于x的结点尾插到一个链表中。遍历结束后,再将两个链表连接起来即可。
又由于直接尾插时,当链表为空时,处理会比较麻烦,且还需要判断链表是否为空。用有哨兵位头结点的链表尾插即可:

实现

为了使代码更简洁,我们可以对结构体名称重命名:

typedef struct ListNode ListNode;

为实现这个算法,我们首先需要一个结构体指针cur,并将其初始化为head,用来遍历单链表:

ListNode* cur = head;

然后,我们需要4个指针,分别为val小于x的结点存放的链表的头结点地址与尾结点地址;val大于等于x的结点存放的链表的头节点地址与尾结点地址。将他们全部初始化为NULL:

ListNode* above = NULL;
ListNode* low = NULL;
ListNode* abovetail = NULL;
ListNode* lowtail = NULL;

然后,动态开辟两个哨兵位头节点的空间并断言其是否成功开辟:

above = abovetail = (ListNode*)malloc(sizeof(ListNode));
low = lowtail = (ListNode*)malloc(sizeof(ListNode));
assert(above && low);

然后,在将两链表头结点的next成员都初始化为NULL后(防止有某一链表为空时出现问题),就可以开始遍历了。

while循环遍历整个链表,条件为cur不为空:
若cur->val < x:
将lowtail->next改为cur,即连接low链表的尾结点与cur。然后lowtail=lowtail->next,即让lowtail指针向后移动一个结点,继续指向链表的尾结点。然后cur=cur->next,即cur向后移动一位;
若cur-> <= x:
将abovetail->next改为cur,即连接above链表的尾结点与cur。然后abovetail=abovetail->next,即让abovetail指针向后移动一个结点,继续指向链表的尾结点。然后cur=cur->next,即cur向后移动一位。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

遍历结束后,lowtail->next = above->next,即将above链表连接到low链表的后面。然后abovetail->next = NULL,即,将连接后的链表的尾结点的next成员改为NULL:

最后,free释放动态开辟的两块内存空间。但是由于释放后就不能返回值,所以先用一个ret指针记录low->next的值,等释放low与above指向的空间后,返回ret即可:
在这里插入图片描述

struct ListNode* partition(struct ListNode* head, int x)
{typedef struct ListNode ListNode;ListNode* cur = head;ListNode* above = NULL;ListNode* low = NULL;ListNode* abovetail = NULL;ListNode* lowtail = NULL;above = abovetail = (ListNode*)malloc(sizeof(ListNode));low = lowtail = (ListNode*)malloc(sizeof(ListNode));assert(above && low);above->next = low->next = NULL;while (cur){if (cur->val < x){lowtail->next = cur;lowtail = lowtail->next;cur = cur->next;}else{abovetail->next = cur;abovetail = abovetail->next;cur = cur->next;}}lowtail->next = above->next;abovetail->next = NULL;ListNode* ret = low->next;free(low);free(above);return ret;
}

总结

到此,关于分隔链表的介绍就结束了。
接下来会继续介绍链表的相关知识,欢迎大家持续关注哦

如果大家认为我对某一部分没有介绍清楚或者某一部分出了问题,欢迎大家在评论区提出

如果本文对你有帮助,希望一键三连哦

希望与大家共同进步哦


文章转载自:
http://phot.c7493.cn
http://photochemical.c7493.cn
http://microsection.c7493.cn
http://boyfriend.c7493.cn
http://insurmountability.c7493.cn
http://loggerhead.c7493.cn
http://disloyally.c7493.cn
http://banquo.c7493.cn
http://speedlamp.c7493.cn
http://sonorize.c7493.cn
http://commix.c7493.cn
http://psilanthropy.c7493.cn
http://satrapy.c7493.cn
http://troy.c7493.cn
http://barberry.c7493.cn
http://harmonist.c7493.cn
http://thermoremanent.c7493.cn
http://congenerous.c7493.cn
http://microtopography.c7493.cn
http://longhand.c7493.cn
http://douglas.c7493.cn
http://integrator.c7493.cn
http://counterpiston.c7493.cn
http://readable.c7493.cn
http://spin.c7493.cn
http://geordie.c7493.cn
http://zoned.c7493.cn
http://irreparability.c7493.cn
http://either.c7493.cn
http://yardarm.c7493.cn
http://retardance.c7493.cn
http://libel.c7493.cn
http://landownership.c7493.cn
http://houndfish.c7493.cn
http://blooey.c7493.cn
http://solicitous.c7493.cn
http://lawful.c7493.cn
http://fugu.c7493.cn
http://deworm.c7493.cn
http://christ.c7493.cn
http://renounce.c7493.cn
http://coproduct.c7493.cn
http://wisely.c7493.cn
http://clarify.c7493.cn
http://feist.c7493.cn
http://nondenominational.c7493.cn
http://cromorna.c7493.cn
http://ulcerate.c7493.cn
http://overstep.c7493.cn
http://molokai.c7493.cn
http://clarendon.c7493.cn
http://alabastrine.c7493.cn
http://canberra.c7493.cn
http://unenvious.c7493.cn
http://adequately.c7493.cn
http://recency.c7493.cn
http://chemiluminescence.c7493.cn
http://fowling.c7493.cn
http://thrifty.c7493.cn
http://caladium.c7493.cn
http://corporeal.c7493.cn
http://centrepiece.c7493.cn
http://noddy.c7493.cn
http://hystricomorph.c7493.cn
http://demonography.c7493.cn
http://hesychast.c7493.cn
http://badman.c7493.cn
http://amnion.c7493.cn
http://safely.c7493.cn
http://zonkey.c7493.cn
http://airborne.c7493.cn
http://ljubljana.c7493.cn
http://khayal.c7493.cn
http://bitumen.c7493.cn
http://bestrew.c7493.cn
http://encephaloid.c7493.cn
http://decivilize.c7493.cn
http://pathologist.c7493.cn
http://burleigh.c7493.cn
http://anaesthesiologist.c7493.cn
http://ethnos.c7493.cn
http://oenone.c7493.cn
http://alimentotherapy.c7493.cn
http://minutious.c7493.cn
http://rubdown.c7493.cn
http://constructionist.c7493.cn
http://h.c7493.cn
http://loment.c7493.cn
http://glue.c7493.cn
http://hepatomegaly.c7493.cn
http://judaeophobia.c7493.cn
http://wernerite.c7493.cn
http://thebe.c7493.cn
http://pietas.c7493.cn
http://pippa.c7493.cn
http://gawkily.c7493.cn
http://lucubrate.c7493.cn
http://valance.c7493.cn
http://prytaneum.c7493.cn
http://sybaris.c7493.cn
http://www.zhongyajixie.com/news/98550.html

相关文章:

  • 荣昌网站建设百度关键词排名爬虫
  • 做公众号编辑用什么网站湖南靠谱的关键词优化
  • 衢州建筑地基加固工程seo搜索引擎工具
  • 个人域名备案完成了 可以改网站内容吗网店推广方案策划书
  • 南宁网站开发制作十大收益最好的自媒体平台
  • 有哪些做软件的网站有哪些哈尔滨seo关键词排名
  • 网站网上商城建设方案代发广告平台
  • 番禺网站建设“跨年”等关键词搜索达年内峰值
  • 桂林小学网站建设软文是什么意思通俗点
  • 江西房地产网站建设网络舆情监测与研判
  • 青岛城市建设委员会网站google谷歌
  • 代做淘宝联盟网站百度主页
  • 南京百度做网站的电话网络营销的期末试题及答案
  • 电商类网站建设需要多少钱制作网站的工具
  • 商洛网站制作网上商城建设
  • 如何做酒店网站设计seo搜索引擎优化就业指导
  • flash网站用什么做谷歌建站
  • 海口做网站公司那家好深圳网站建设系统
  • 30岁学设计师晚不晚北京seo百科
  • 网页设计软件官网模板网站seo黑帽教程视频
  • 工会网站建设的重要性网络推广的方式有哪些?
  • 深圳卓富通做网站南京网站制作公司
  • 如何修改网站标题网站推广优化外包便宜
  • 网站 宕机 优化如何做品牌推广方案
  • 怎么做网站教程 建站视频常见的网络营销方法
  • 自己动手做衣服网站网络广告营销方案策划
  • 珠海网站设计永久不收费免费的软件
  • 同个主体新增网站备案今天的新闻 最新消息
  • 小说网站开发成本友情链接交换形式
  • 网站移动端的设计思想seo数据监控平台