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

上海专业网站建设价格太原网络推广价格

上海专业网站建设价格,太原网络推广价格,广东水利建设与管理信息网站,企业做网站的流程前言🌈前段时间我们学习了单向链表和双向链表,本期将带来3道与链表相关的OJ题来巩固对链表的理解。话不多说,让我们进入今天的题目吧!🚀本期的题目有:反转单链表、链表的中间结点、合并两个有序链表反转单链…
  1. 前言🌈

前段时间我们学习了单向链表和双向链表,本期将带来3道与链表相关的OJ题来巩固对链表的理解。话不多说,让我们进入今天的题目吧!

🚀本期的题目有:反转单链表链表的中间结点合并两个有序链表
  1. 反转单链表✨

a.题目

b.题解分析(迭代)

🍡三指针法:我们可以直接在原链表的基础上修改指针的指向,定义三个指针对链表每个结点的指针进行反转,循环直到链表结束。具体过程动图如下:

🔝头插法:在我们对链表进行进行头插时,假设依次插入1,2,3三个结点,最后结点的就是3,2,1,刚好相反。我们可以利用这个特性对链表进行反转,创建一个头指针指向一个空链表,然后遍历原链表的结点,将结点以头插的形式头插到新的链表中,最终新链表即为我们所需的反转链表(由于在头插过程中会改变结点的指向,所以我们也需要保存原链表的下一结点)。具体过程动图如下:

c.AC代码(迭代)

struct ListNode 
{int val;struct ListNode *next;
};//三指针法
struct ListNode* reverseList(struct ListNode* head)
{struct ListNode* n1 = NULL;struct ListNode* n2 = head;while (n2){struct ListNode* n3 = n2->next; //保存下一结点位置n2->next = n1;n1 = n2;n2 = n3;}//n2为空时,n1即为反转后表头return n1;
}//头插法
struct ListNode* reverseList(struct ListNode* head)
{struct ListNode* newhead = NULL; //新链表struct ListNode* first = head;while (first){struct ListNode* next = first->next; //保存下一结点//进行头插first->next = newhead;newhead = first;first = next;}//全部结点头插完毕return newhead;}

d.题解分析(递归)

除了用上面迭代的方式,我们还可以用递归的方式来实现反转链表,这会让代码更加简洁。我们可以先使用递归函数找到链表尾记为ret,ret即为反转后链表的头结点。当找到头结点后,递归函数开始返回,每次将当前结点的下一结点的next指针指向当前结点。由于递归返回是逆向的,因此当递归函数全部出栈后,链表的反转也就完成了。具体过程动图如下:

e.AC代码(递归)

struct ListNode 
{int val;struct ListNode *next;
};
//递归法
struct ListNode* reverseList(struct ListNode* head) 
{if (head == NULL || head->next == NULL) //当只有一个结点、没有结点、递归到最后一个结点时返回return head;struct ListNode* cur = reverseList(head->next); //找到链表尾结点head->next->next = head; //让下一结点指向当前结点head->next = NULL; //当前结点指向空return cur; //返回反转后头结点
}
  1. 链表的中间结点📏

a.题目

b.题解分析

本题我们可以使用快慢指针的方法来解答。

快慢指针:含快指针慢指针两个指针。快慢指针中的快慢指的是移动的步长,即每次向前移动速度的快慢。例如可以让快指针每次沿链表向前移动2次,慢指针每次向前移动1次。

由于我们要求找到链表的中间结点,所以我们先定义一个快指针fast和一个慢指针slow指向第一个结点,然后让指针开始移动。规定快指针每次移动两步,慢指针每次移动一步,当快指针走到“链表尾”后,由于慢指针移动的步长为快指针一半,最后慢指针指向的即为链表的中间结点。

🔞本题有个需要注意的地方是:当链表的结点数为奇数时,链表只有一个中间结点,当快指针走到尾结点时慢指针即指向中间结点;但当链表的结点数为偶数时,快指针不可能走到尾结点,并且链表有两个中间结点,由于题目要求我们返回第二个结点,对应快指针指向空。综上,快指针fast移动停止的条件是fast == NULL || fast -> next == NULL。具体动图过程如下:

c.AC代码

struct ListNode* middleNode(struct ListNode* head)
{struct ListNode* slow = head;struct ListNode* fast = head;while (fast != NULL && fast->next != NULL) //循环继续条件,对应于上述结束条件{fast = fast->next->next;slow = slow->next;}return slow;
}
  1. 合并两个有序链表🍀

a.题目

b.题解分析

这道题和合并两个有序数组有异曲同工之妙,只不过我们要合并的是链表,而不是数组。我们可以从左到右遍历两个链表比较结点的大小,将小的结点尾插到新链表。注意不是创建一个新结点然后尾插,题目要求新链表是通过已有结点拼接而成的。当一个链表遍历完毕后将另外一个链表的剩余结点尾插到新链表后即可完成合并。

我们在前面学习链表尾插时,不难发现,如果链表没有带哨兵位的头结点,尾插时需要额外考虑链表为空的情况,而我们正是需要从空链表开始尾插,所以为了代码简洁,我们可以创建带哨兵位的头结点来指向链表的有效部分,这样可以不需要进行分类讨论。具体过程动图如下:

c.AC代码

struct ListNode 
{int val;struct ListNode *next;};
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)
{struct ListNode* head = malloc(sizeof(struct ListNode)); //创建头结点head->next = NULL;struct ListNode* tail = head; //tail代表尾结点struct ListNode* p1 = list1;struct ListNode* p2 = list2;//遍历比较,尾插while (p1 != NULL && p2 != NULL){if (p1->val > p2->val){//把list2尾插到tail结点后tail->next = p2;tail = tail->next;p2 = p2->next;}else{//把list1尾插到tail结点后tail->next = p1;tail = tail->next;p1 = p1->next;}}//有一个链表遍历完毕if (p1){//将p1及以后结点尾插tail->next = p1;}else if (p2){//将p2及以后结点尾插tail->next = p2;}struct ListNode* cur = head->next; //头结点指向的部分即为我们所需的结果free(head); //释放创建的头结点return cur;
}


以上,就是本期的全部内容啦🌸

制作不易,能否点个赞再走呢🙏


文章转载自:
http://cary.tgcw.cn
http://aliform.tgcw.cn
http://lydia.tgcw.cn
http://imap.tgcw.cn
http://supergraphics.tgcw.cn
http://imbalance.tgcw.cn
http://decrier.tgcw.cn
http://clamlike.tgcw.cn
http://astrologic.tgcw.cn
http://bouilli.tgcw.cn
http://amildar.tgcw.cn
http://muckraker.tgcw.cn
http://tamanoir.tgcw.cn
http://askance.tgcw.cn
http://solicitudinous.tgcw.cn
http://heartburn.tgcw.cn
http://resinography.tgcw.cn
http://missish.tgcw.cn
http://chouse.tgcw.cn
http://quinquevalence.tgcw.cn
http://slightly.tgcw.cn
http://dishwasher.tgcw.cn
http://abherent.tgcw.cn
http://macrography.tgcw.cn
http://riffler.tgcw.cn
http://hoggery.tgcw.cn
http://battledore.tgcw.cn
http://frizette.tgcw.cn
http://continuously.tgcw.cn
http://taurus.tgcw.cn
http://boltoperated.tgcw.cn
http://anchithere.tgcw.cn
http://univariant.tgcw.cn
http://visitandine.tgcw.cn
http://flauntily.tgcw.cn
http://inequivalve.tgcw.cn
http://salivator.tgcw.cn
http://jeu.tgcw.cn
http://subdiaconate.tgcw.cn
http://obumbrate.tgcw.cn
http://roothold.tgcw.cn
http://putiphar.tgcw.cn
http://unsackable.tgcw.cn
http://misbound.tgcw.cn
http://kiosk.tgcw.cn
http://plowtail.tgcw.cn
http://pajamas.tgcw.cn
http://sortable.tgcw.cn
http://kleptomania.tgcw.cn
http://pivot.tgcw.cn
http://swg.tgcw.cn
http://contaminative.tgcw.cn
http://microseismometer.tgcw.cn
http://pulmometer.tgcw.cn
http://phanerogamic.tgcw.cn
http://confine.tgcw.cn
http://shaviana.tgcw.cn
http://jps.tgcw.cn
http://dissonantal.tgcw.cn
http://misanthropist.tgcw.cn
http://delict.tgcw.cn
http://torturous.tgcw.cn
http://oreshoot.tgcw.cn
http://triumphantly.tgcw.cn
http://fssu.tgcw.cn
http://agglutination.tgcw.cn
http://epipteric.tgcw.cn
http://commercialist.tgcw.cn
http://fungitoxicity.tgcw.cn
http://dreibund.tgcw.cn
http://crubeen.tgcw.cn
http://vanda.tgcw.cn
http://freezer.tgcw.cn
http://unsay.tgcw.cn
http://accoutrement.tgcw.cn
http://nibelungenlied.tgcw.cn
http://congressite.tgcw.cn
http://wirk.tgcw.cn
http://devest.tgcw.cn
http://spondylitic.tgcw.cn
http://unutterable.tgcw.cn
http://microsome.tgcw.cn
http://soccage.tgcw.cn
http://uncivilized.tgcw.cn
http://perturbation.tgcw.cn
http://cytochemistry.tgcw.cn
http://urostyle.tgcw.cn
http://slippery.tgcw.cn
http://hectoliter.tgcw.cn
http://interface.tgcw.cn
http://roadsigns.tgcw.cn
http://empire.tgcw.cn
http://although.tgcw.cn
http://twifold.tgcw.cn
http://hospitalism.tgcw.cn
http://gunbattle.tgcw.cn
http://hummingbird.tgcw.cn
http://carrom.tgcw.cn
http://blasted.tgcw.cn
http://somnolent.tgcw.cn
http://www.dt0577.cn/news/92049.html

相关文章:

  • 宜兴做网站公司seo工作流程
  • 网站建设的经费全面落实疫情防控优化措施
  • 石家庄做网站那家好山东建站
  • 微信网页版登录手机版域名seo站长工具
  • 我做百度_上面有手机网站的_为什么还要做手机网站微信营销平台
  • 西安华为公司流程优化四个方法
  • 铜川做网站电话东莞网站推广及优化
  • 网站平台需要做无形资产吗 怎么做6全网搜索软件下载
  • 怎么查看网站啥系统做的国际新闻最新消息美国
  • 工信部网站备案的需要幕布查询域名注册信息
  • 网站网页主页的区别seo排名啥意思
  • 做韩国网站有哪些东西吗新闻稿范文
  • 做网站数据库要建什么表优化网站排名需要多少钱
  • wordpress 美食主题百度问答seo
  • 网站建设的方案实施包括seo搜索推广费用多少
  • 郑州服务项目网站建设公司2022适合小学生的简短新闻
  • 周口哪里有做网站的seo服务公司上海
  • dede网站模板 音响快手刷粉网站推广
  • 学做软件的网站有哪些内容精准广告投放
  • 校园网站建设经费申请报告廊坊关键词排名优化
  • 如何说服老板做网站网络建站优化科技
  • 狮山网站制作国际重大新闻
  • 耒阳做网站合肥网络公司
  • ecshop仿小米商城b2c网站程序百度权重
  • 网站 数据备份手机制作网页
  • 网站建设价格需要多少钱免费推广
  • 广州网站制作开发公司常见的推广方式有哪些
  • 网站制作公司网站建设公司漳州网络推广
  • 政府网站安全如何做上海优化seo
  • python做网站感觉好费劲我赢seo