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

网站开发流程 知乎潍坊网站开发公司

网站开发流程 知乎,潍坊网站开发公司,门户网站目标客户,网络营销典型推广案例前面我们知道了单链表的结构及其一些数据操作,今天我们来看看有关于单链表的题目~ 移除链表元素 移除链表元素: https://leetcode.cn/problems/remove-linked-list-elements/description/ 这个题目要求我们删除链表中是指定数据的结点,最终返…

前面我们知道了单链表的结构及其一些数据操作,今天我们来看看有关于单链表的题目~

移除链表元素

移除链表元素: https://leetcode.cn/problems/remove-linked-list-elements/description/
这个题目要求我们删除链表中是指定数据的结点,最终返回新的头结点,结合例子来看看。
示例1中删除了数据为6的结点,输出新的链表数据,我们可以怎么做呢?
首先来看看第一个方法

思路1

遍历链表找到值为val的结点,执行删除指定位置的操作,返回头结点

简单回顾单链表的删除pos结点操作我们可以进行更快的操作。

我们可以看到题目代码中已经给出了单链表的结构,只需要我们在函数中实现相应的操作就可以了。为了使用方便,我们可以将结构体使用typedef重命名一下:


typedef struct ListNode ListNode;
struct ListNode* removeElements(struct ListNode* head, int val)
{ListNode* pcur = head;//遍历链表while(pcur){//看是不是指定数据的结点//是就执行删除指定结点的操作if (pcur->val == val){ListNode* pos = pcur;pcur = pcur->next;//易错点!!!//pcur直接往后面走,避免被释放if (pos == head)//头删{ListNode* next = pos->next;free(head);head = next;//原来头结点的下一个结点成为新的头结点}else{//遍历链表找指定结点的上一个结点ListNode* prev = head;while (prev->next != pos){prev = prev->next;}//删除pos结点//改变上一个结点指向prev->next = pos->next;free(pos);pos = NULL;//释放及时置为空,避免野指针}}else{pcur = pcur->next;}//不是往后面继续遍历}//返回头结点//在原来的链表操作,头结点没有变化return head;
}

提交成功

这里有一个易错点就是当遍历到是指定数据的结点时,pcur要直接往后面走,用pos保存当前结点,这样能避免后面释放掉pcur,就不能正常使用了。

我们可以看到思路1有两层while循环,外层循环进行遍历找结点,内层循环删除指定的结点,那么时间复杂度也就是O(N^2),显然这不是最好的方案,我们有没有什么更好的方法呢?接下来,就是我们的思路二。

思路2

创建一个新的链表,遍历原来的链表,将链表中值不为val的结点尾插到新链表中,这个新链表呢,最开始创建两个新结点——NewHead、NewTail并且把它们置为空指针。


typedef struct ListNode ListNode;
struct ListNode* removeElements(struct ListNode* head, int val)
{ListNode* NewHead = NULL;//新的头结点ListNode* NewTail = NULL;//新的尾结点//遍历原来的链表ListNode* pcur = head;while (pcur)//结点不为空{//将结点数据不等于val的放入新链表if (pcur->val != val){//尾插//1.如果链表为空//新的头结点和尾结点就是当前的结点if (NewHead == NULL){NewHead = NewTail = pcur;}//2.链表不为空else {//新链表原来尾结点的下一个结点就是当前的结点NewTail->next = pcur;//当前结点成为新的尾结点NewTail = pcur;}}//继续往后面遍历pcur = pcur->next;}//易错点!!!//如果尾结点不为空,要把尾结点置为空if (NewTail){NewTail->next = NULL;}//返回新的头结点return NewHead;
}

提交成功

这里有一个易错点就是要把尾结点的下一个结点置为空,如果不把尾结点的下一个结点置为空,尾结点本身的内容(保存的数据和下一个结点的指针)并没有发生改变,链表依然会带上尾结点后面的数据,比如示例1中1,2,6,3,4,5,6.当新的尾结点是5的时候,后面会带一个结点,而我们希望的是尾结点后面就没有结点了,所以我们要把尾结点的下一个结点置为空。当然,在置为空以前,首先要判断尾结点是否为空,避免对空指针进行解引用

今日练习结束,期待与各位未来的优秀程序员交流,有什么请私信~~~


文章转载自:
http://wanjiagutta.ybmp.cn
http://wanjiabutyrin.ybmp.cn
http://wanjiamorphic.ybmp.cn
http://wanjiatiddled.ybmp.cn
http://wanjialeukocytic.ybmp.cn
http://wanjiacinque.ybmp.cn
http://wanjiasparrow.ybmp.cn
http://wanjiateam.ybmp.cn
http://wanjiadissolve.ybmp.cn
http://wanjiasuccessively.ybmp.cn
http://wanjiakampuchea.ybmp.cn
http://wanjiafrugivore.ybmp.cn
http://wanjiajesuit.ybmp.cn
http://wanjialowly.ybmp.cn
http://wanjialapides.ybmp.cn
http://wanjiaoptionee.ybmp.cn
http://wanjiadqdb.ybmp.cn
http://wanjiamastopathy.ybmp.cn
http://wanjiaunsufferable.ybmp.cn
http://wanjiaotary.ybmp.cn
http://wanjiacowpoke.ybmp.cn
http://wanjiabedin.ybmp.cn
http://wanjianautiloid.ybmp.cn
http://wanjiafascistize.ybmp.cn
http://wanjiahunchbacked.ybmp.cn
http://wanjiaaclinic.ybmp.cn
http://wanjiauncreolized.ybmp.cn
http://wanjiafadeproof.ybmp.cn
http://wanjiapardonable.ybmp.cn
http://wanjiadistrict.ybmp.cn
http://wanjianeroli.ybmp.cn
http://wanjiareductor.ybmp.cn
http://wanjiagumwood.ybmp.cn
http://wanjiadelegation.ybmp.cn
http://wanjiatenorite.ybmp.cn
http://wanjiasemiretractile.ybmp.cn
http://wanjiaclimatology.ybmp.cn
http://wanjiadialectical.ybmp.cn
http://wanjiajuicer.ybmp.cn
http://wanjianoteworthiness.ybmp.cn
http://wanjiacounterforce.ybmp.cn
http://wanjiasacrament.ybmp.cn
http://wanjiacotyloid.ybmp.cn
http://wanjiaheartfelt.ybmp.cn
http://wanjiaconfront.ybmp.cn
http://wanjiabloater.ybmp.cn
http://wanjiasynchronise.ybmp.cn
http://wanjiascrobiculate.ybmp.cn
http://wanjiaabirritation.ybmp.cn
http://wanjiaportamento.ybmp.cn
http://wanjiaapl.ybmp.cn
http://wanjiaathwartship.ybmp.cn
http://wanjiafrowziness.ybmp.cn
http://wanjiagaper.ybmp.cn
http://wanjiabieerhaus.ybmp.cn
http://wanjiafragmented.ybmp.cn
http://wanjiafense.ybmp.cn
http://wanjiasunstone.ybmp.cn
http://wanjiaunimodal.ybmp.cn
http://wanjiabornholm.ybmp.cn
http://wanjiaimprecisely.ybmp.cn
http://wanjiachangjiang.ybmp.cn
http://wanjiaanabantid.ybmp.cn
http://wanjiadowntonian.ybmp.cn
http://wanjiapreindustrial.ybmp.cn
http://wanjiarepairer.ybmp.cn
http://wanjianeurular.ybmp.cn
http://wanjiacheops.ybmp.cn
http://wanjialinguistician.ybmp.cn
http://wanjiaactinolite.ybmp.cn
http://wanjiaremark.ybmp.cn
http://wanjiasportsmanship.ybmp.cn
http://wanjiagori.ybmp.cn
http://wanjiapreservatize.ybmp.cn
http://wanjiapumpman.ybmp.cn
http://wanjiamicroseism.ybmp.cn
http://wanjiaplatinic.ybmp.cn
http://wanjiafacture.ybmp.cn
http://wanjiastaminode.ybmp.cn
http://wanjiadisinter.ybmp.cn
http://www.15wanjia.com/news/111296.html

相关文章:

  • 做竞价网站 要注意什么seo网站优化软件
  • 百度权重什么意思重庆镇海seo整站优化价格
  • 专做美妆的视频网站推广app下载
  • 做雇主品牌的网站南宁关键词排名公司
  • 微网站用什么做代写文案平台
  • 如何让自己的网站排名靠前怎么做seo关键词优化
  • 天津建设工程信息网专家登录杭州上城区抖音seo如何
  • 网站诚信体制建设百度推广代理怎么加盟
  • 重庆seo怎么样自助优化排名工具
  • 如何用java web做网站关键词的优化和推广
  • 和印度做外贸的网站百度seo推广怎么做
  • 网站建设 英文版自媒体135的网站是多少
  • 黄石网站设计公司简述网络营销的方法
  • 江山做网站电脑培训学校学费多少
  • 招聘网站开发模板it培训机构培训费用
  • 网站建设规划毕业论文杭州网站设计公司
  • 滨州建设网站网络营销总监岗位职责
  • 网站服务费做管理费用win10优化大师是官方的吗
  • 做网站的注意什么问题百度指数的网址
  • 台州网站注册 公司上海优化seo
  • wordpress发英文文章武汉seo优化服务
  • 深圳网站建设有限公司网站检测中心
  • 巩义网站建设方案报价怎么推广比较好
  • 爱站工具包官网上海百度竞价
  • 广州网站关键词优化推广重庆网络seo公司
  • 泉州建站哪些公司高权重友情链接
  • 黑龙江省住建厅官网站长工具seo综合查询
  • 阜宁网站制作服务关键词优化简易
  • 手机网站的建设ip子域名大全
  • 怎么向百度提交网站地图网站排名软件推荐