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

天津网站建设seo优化seo是什么工作内容

天津网站建设seo优化,seo是什么工作内容,网站源码采集,重庆专业网站建设单链表OJ题 前言一、删除链表中等于给定值 val 的所有节点二、反转一个单链表三、返回链表的中间结点四、输出该链表中倒数第k个结点五、将两个有序链表合并六、链表的回文结构七、将链表分割成两部分八、找出第一个公共结点九、判断链表中是否有环总结 前言 在前面的博客中我…

在这里插入图片描述

单链表OJ题

  • 前言
  • 一、删除链表中等于给定值 val 的所有节点
  • 二、反转一个单链表
  • 三、返回链表的中间结点
  • 四、输出该链表中倒数第k个结点
  • 五、将两个有序链表合并
  • 六、链表的回文结构
  • 七、将链表分割成两部分
  • 八、找出第一个公共结点
  • 九、判断链表中是否有环
  • 总结


前言

在前面的博客中我们知道了什么是单链表以及如何建立单链表!
现在让我们来检验一下学习成果吧!

提示:此博客中题目均来自牛客网以及力扣网!在题目中我会附带两大网站的链接,大家也可以去练习一下!
若有链接问题可以在评论区及时反馈!


一、删除链表中等于给定值 val 的所有节点

题目链接:OJ链接
在这里插入图片描述

提示:
列表中的节点数目在范围 [0, 104] 内
1 <= Node.val <= 50
0 <= val <= 50

思路解析:
在这里插入图片描述

代码演示:

struct ListNode* removeElements(struct ListNode* head, int val) {struct ListNode* newhead = NULL;struct ListNode* move = head;struct ListNode* tail = NULL;while (move != NULL) {if (move->val != val) {if (tail == NULL) {//如果newnode为NULL,则tail等于newnode,则直接将结点地址赋予tailnewhead = tail = move;move = move->next;}else {tail->next = move;move = move->next;tail = tail->next;}}else {struct ListNode* temp = move;//新建结点保存要free的地址,以免free后造成节点丢失move = move->next;free(temp);}}if (tail)//如果新链表不为空,则将其尾结点的next置空tail->next = NULL;return newhead;}

二、反转一个单链表

题目链接:OJ链接
在这里插入图片描述
在这里插入图片描述

提示:
链表中节点的数目范围是 [0, 5000]
-5000 <= Node.val <= 5000

思路解析:
在这里插入图片描述

代码演示:

struct ListNode* reverseList(struct ListNode* head) {struct ListNode* move1 = head;struct ListNode* tail = head;if (head == NULL || head->next == NULL) {//如果链表为空或者只有一个结点,则不需要反转return tail;}struct ListNode* move2 = move1->next;while (move2) {struct ListNode* temp = move2->next;//保存下一个结点的地址,防止后面的节点丢失move2->next = move1;move1 = move2;move2 = temp;}tail->next = NULL;//尾结点的next置空struct ListNode* newhead = move1;//move1最后指向了反转链表的起始结点return newhead;
}

三、返回链表的中间结点

题目链接:OJ链接
在这里插入图片描述

提示:
链表的结点数范围是 [1, 100]
1 <= Node.val <= 100

思路解析:
在这里插入图片描述

代码演示:

struct ListNode* middleNode(struct ListNode* head){struct ListNode*move1=head;struct ListNode*move2=head;while(move2!=NULL&&move2->next!=NULL){//此处move2!=NULL和move2->next!=NULLmove1=move1->next;                //的位置不能交换,否则会造成空指针错误move2=move2->next->next;}return move1;
}

四、输出该链表中倒数第k个结点

题目链接:OJ链接
在这里插入图片描述
思路解析:
在这里插入图片描述

代码演示:

struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {struct ListNode*move1=pListHead;struct ListNode*move2=pListHead;int i=k;while(i>0&&move2!=NULL){//move2向后移动k位move2=move2->next;i--;}if(move2==NULL&&i>0){//如果k大于链表结点数目,则返回NULLreturn move2;}while(move2){move1=move1->next;move2=move2->next;}return move1;
}

五、将两个有序链表合并

题目链接:OJ链接
在这里插入图片描述
在这里插入图片描述

提示:
两个链表的节点数目范围是 [0, 50]
-100 <= Node.val <= 100
l1 和 l2 均按 非递减顺序 排列

思路解析:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码演示:

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){struct ListNode*move1=list1;struct ListNode*move2=list2;struct ListNode*newnode=NULL;struct ListNode*tail=NULL;while(move1!=NULL&&move2!=NULL){if(move1->val<=move2->val){if(tail==NULL){{//如果newnode为NULL,则tail等于newnode,则直接将结点地址赋予tailnewnode=tail=move1;move1=move1->next;}else{tail->next=move1;move1=move1->next;tail=tail->next;}}else{if(tail==NULL){//如果newnode为NULL,则tail等于newnode,则直接将结点地址赋予tailnewnode=tail=move2;move2=move2->next;}else{tail->next=move2;move2=move2->next;tail=tail->next;}}}if(move1==NULL){//如果链表1遍历完而链表2没有,则将链表2剩余结点尾插到newnode中while(move2!=NULL){if(tail==NULL){//如果newnode为NULL,则tail等于newnode,则直接将结点地址赋予tailnewnode=tail=move2;move2=move2->next;}else{tail->next=move2;move2=move2->next;tail=tail->next;}}}if(move2==NULL){//如果链表2遍历完而链表1没有,则将链表1剩余结点尾插到newnode中while(move1!=NULL){if(tail==NULL){//如果newnode为NULL,则tail等于newnode,则直接将结点地址赋予tailnewnode=tail=move1;move1=move1->next;}else{tail->next=move1;move1=move1->next;tail=tail->next;}}}return newnode;
}

六、链表的回文结构

题目链接:OJ链接

在这里插入图片描述
思路解析:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码演示:

bool chkPalindrome(struct ListNode* A) {struct ListNode* move1 = A;struct ListNode* move2 = A;struct ListNode* move3 = A;struct ListNode* newnode = NULL;struct ListNode* tail = NULL;while (move2 != NULL&&move2->next != NULL ) {//找到中间节点move1 = move1->next;move2 = move2->next->next;}if (move2 == NULL);//如果节点个数为奇数,则move1向后移动一位else {move1 = move1->next;}while (move1 != NULL) {//将后半段链表头插到newnode中if (newnode == NULL) {newnode = tail = move1;move1 = move1->next;tail->next = NULL;}else {struct ListNode* temp = move1->next;move1->next = newnode;newnode = move1;move1 = temp;}}struct ListNode* cmp = newnode;while (move3 != NULL && cmp != NULL) {//比较原链表前半段和newnode是否相同if (move3->val != cmp->val) {return 0;}else {move3 = move3->next;cmp = cmp->next;}}return 1;
}

七、将链表分割成两部分

题目链接:OJ链接
在这里插入图片描述
思路解析:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

代码演示:

ListNode* partition(ListNode* pHead, int x) {struct ListNode*head1=(struct ListNode*)malloc(sizeof(struct ListNode));struct ListNode*head2=(struct ListNode*)malloc(sizeof(struct ListNode));struct ListNode*tail1=head1;struct ListNode*tail2=head2;struct ListNode*move=pHead;while(move){if(move->val<x){tail1->next=move;move=move->next;tail1=tail1->next;}else{tail2->next=move;move=move->next;tail2=tail2->next;}}tail2->next=NULL;//将尾指针的next置空tail1->next=head2->next;struct ListNode*temp1=head1;struct ListNode*temp2=head2;head1=head1->next;//指针指向头结点的下一节点free(temp1);//释放掉创建的头结点free(temp2);return head1;}

八、找出第一个公共结点

题目链接:OJ链接
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意:
函数返回结果后,链表必须 保持其原始结构 。

思路解析:
在这里插入图片描述
在这里插入图片描述

代码演示:

struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {struct ListNode *move1=headA;struct ListNode *move2=headB;int len1=1,len2=1;while(move1){//得到链表A的长度move1=move1->next;len1++;}while(move2){//得到链表B的长度move2=move2->next;len2++;}int k=abs(len1-len2);//取相减的绝对值struct ListNode *moveA=headA;struct ListNode *moveB=headB;if(len1>len2){//较长的链表走k步while(k--){moveA=moveA->next;}}if(len1<len2){while(k--){moveB=moveB->next;}}while(moveA&&moveB){if(moveA==moveB)return moveA;//若地址相同则返回moveA=moveA->next;moveB=moveB->next;}return NULL;

九、判断链表中是否有环

题目链接:OJ链接
在这里插入图片描述
在这里插入图片描述

提示:

链表中节点的数目范围是 [0, 104]
-105 <= Node.val <= 105
pos 为 -1 或者链表中的一个 有效索引 。

思路解析:
在这里插入图片描述

代码演示:

bool hasCycle(struct ListNode *head) {struct ListNode*move1=head;struct ListNode*move2=head;while(move1&&move2&&move2->next){//此处move2和move2->next的顺序不可交换move1=move1->next;           //否则会导致空指针错误move2=move2->next->next;if(move1==move2)return true;}return false;
}

总结

这九道单链表OJ都是我见过的很经典的题型!
在这里为大家分享一下!
希望有更多的人能够通过这些题目更好地掌握单链表相关的知识!


文章转载自:
http://dinncogust.tpps.cn
http://dinncoexfiltration.tpps.cn
http://dinncoforecasting.tpps.cn
http://dinncomacrostomia.tpps.cn
http://dinncoshellfish.tpps.cn
http://dinncouniserial.tpps.cn
http://dinncohorseleech.tpps.cn
http://dinncoshipbuilder.tpps.cn
http://dinncopityroid.tpps.cn
http://dinnconitrosylsulphuric.tpps.cn
http://dinncosadhana.tpps.cn
http://dinncoassembled.tpps.cn
http://dinncopropoxyphene.tpps.cn
http://dinncocanzone.tpps.cn
http://dinncochildie.tpps.cn
http://dinncojcr.tpps.cn
http://dinncocaucasic.tpps.cn
http://dinncodorter.tpps.cn
http://dinncobivalve.tpps.cn
http://dinncobedrid.tpps.cn
http://dinncolinus.tpps.cn
http://dinncogambier.tpps.cn
http://dinncoroquelaure.tpps.cn
http://dinncorye.tpps.cn
http://dinnconitrosoguanidine.tpps.cn
http://dinncoinfirmatory.tpps.cn
http://dinncogamophyllous.tpps.cn
http://dinncokeitloa.tpps.cn
http://dinncosmallage.tpps.cn
http://dinncoinquisitionist.tpps.cn
http://dinncohusk.tpps.cn
http://dinncoquackupuncture.tpps.cn
http://dinncopretend.tpps.cn
http://dinncoadmass.tpps.cn
http://dinncoyafo.tpps.cn
http://dinncobarker.tpps.cn
http://dinncostaphyloplasty.tpps.cn
http://dinncosuperscale.tpps.cn
http://dinncofallalery.tpps.cn
http://dinncohovertrailer.tpps.cn
http://dinncospume.tpps.cn
http://dinncofret.tpps.cn
http://dinncofrise.tpps.cn
http://dinncoencomiast.tpps.cn
http://dinncosemireligious.tpps.cn
http://dinncowindbell.tpps.cn
http://dinncoasiadollar.tpps.cn
http://dinncowingbeat.tpps.cn
http://dinncositebuilder.tpps.cn
http://dinncopaperbark.tpps.cn
http://dinncotriclinic.tpps.cn
http://dinncoinflator.tpps.cn
http://dinncononcontradiction.tpps.cn
http://dinncoaerophone.tpps.cn
http://dinncotrustfulness.tpps.cn
http://dinncoheard.tpps.cn
http://dinncopuppetry.tpps.cn
http://dinncotmo.tpps.cn
http://dinncodeuteranomalous.tpps.cn
http://dinncopetala.tpps.cn
http://dinncoadmeasurement.tpps.cn
http://dinncofruitlet.tpps.cn
http://dinncoaimer.tpps.cn
http://dinncobobolink.tpps.cn
http://dinncocushitic.tpps.cn
http://dinncoideography.tpps.cn
http://dinncobecome.tpps.cn
http://dinncosyndesmosis.tpps.cn
http://dinncodidacticism.tpps.cn
http://dinncotaileron.tpps.cn
http://dinnconolle.tpps.cn
http://dinncoinelastic.tpps.cn
http://dinncochicanery.tpps.cn
http://dinncodolly.tpps.cn
http://dinncoinpro.tpps.cn
http://dinncoprelim.tpps.cn
http://dinncopreemployment.tpps.cn
http://dinncoinoculable.tpps.cn
http://dinncoeke.tpps.cn
http://dinncomortician.tpps.cn
http://dinncoconglobulation.tpps.cn
http://dinncoupwafted.tpps.cn
http://dinncosilverware.tpps.cn
http://dinncoacropetal.tpps.cn
http://dinncoshort.tpps.cn
http://dinncokissable.tpps.cn
http://dinncoglout.tpps.cn
http://dinncokaryoplasm.tpps.cn
http://dinncocreaming.tpps.cn
http://dinncoentomology.tpps.cn
http://dinncosubcabinet.tpps.cn
http://dinncoanimation.tpps.cn
http://dinncodeterminist.tpps.cn
http://dinncoecuador.tpps.cn
http://dinncolaurdalite.tpps.cn
http://dinncounemployable.tpps.cn
http://dinncocompensability.tpps.cn
http://dinncotautosyllabic.tpps.cn
http://dinncocolonialist.tpps.cn
http://dinncoreplica.tpps.cn
http://www.dinnco.com/news/145147.html

相关文章:

  • 玉林网站优化店铺在百度免费定位
  • 怎么做app和网站购物车今日桂林头条新闻
  • 网站建设管理的建议官网seo是什么
  • 网站源码开发seo关键词排名优化系统
  • 关于网站开发的开题报告aso优化榜单
  • 动态网站开发实训心得800百度爱采购竞价推广
  • 大数据营销心得体会seo咨询常德
  • 如何推进政府网站建设方案百度收录官网
  • 原创音乐网站源码杭州网站排名seo
  • 网站开发html5百度西安分公司地址
  • 如何查询公司做没做网站seo交流网
  • 网站信息备案查询系统阿里巴巴官网首页
  • 网站域名备案服务号网站建设的整体流程有哪些
  • 重庆网站建设电脑版营销型企业网站的功能
  • 有没有淄博张店做兼职工作的网站网站怎么快速排名
  • 网站建设宣传党建八大营销模式有哪几种
  • 除了网页外 网站还需要seo百度刷排名
  • 北京企业网站开发公司哪家好网站建设详细方案
  • 官网的网站开发费用有哪些网站可以免费推广
  • 免费自助建设网站郑州seo优化顾问
  • 毕业设计做网站代码免费个人网站建站
  • wordpress站点的根目录在线crm软件
  • 模板网站可以自己买空间吗吗上首页seo
  • 网站栏目页如何做东莞网站制作
  • 在哪里可以学做网站近期新闻热点
  • 做的最好的微电影网站有哪些seo技术培训岳阳
  • 南京做网站哪家公司最好信息流广告投放平台
  • 网站建设和app开发seo顾问服务
  • 做浏览单的网站百度官方app下载
  • 西安高端网站建设首选营销型网站建设策划书