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

昆明网站建设优化技术wordpress 增加侧边栏

昆明网站建设优化技术,wordpress 增加侧边栏,深圳自建站网站,xml的文档打开乱码程序打开💓 博客主页:C-SDN花园GGbond ⏩ 文章专栏:数据结构经典题目刨析(c语言) 目录 一、题目描述 二、思路分析 三、代码实现 一、题目描述 二、思路分析 要完成一个带随机指针的链表的复制,有一个巧妙的办法:分三步走 1.完成节…

💓 博客主页:C-SDN花园GGbond

⏩ 文章专栏:数据结构经典题目刨析(c语言)

目录

一、题目描述

二、思路分析 

三、代码实现 


 

一、题目描述

二、思路分析 

要完成一个带随机指针的链表的复制,有一个巧妙的办法:分三步走

1.完成节点数据拷贝——在原链表的每个节点后面增加一个拷贝节点,拷贝节点的值等于原节点的值
2.完成节点的随机指针拷贝——原节点的随机指针指向哪里,拷贝节点就指向对应节点的下一个节点(这一部分是这条思路能实现的关键)
3.完成节点的next指针拷贝——将拷贝节点从原链表中取下,按顺序改变next指针指向,组成新的链表,并恢复原链表的next指针(也可不恢复)

 

1. 原链表中节点的数据拷贝 

  • 创建pcur指针指向链表第一个节点,遍历链表
  • 在每个节点后面创建一个相同结构的拷贝节点,拷贝原节点数据
  • 修改链表next指针指向如下:
  • 原链表节点->该节点拷贝节点->原链表下一个节点->该节点拷贝节点……原链表最后一个节点->该节点拷贝节点->NULL

 经过第一轮循环后,原链表每个节点之后被插入了一个新节点

 

这一部分的实现代码如下 

/*** Definition for a Node.* struct Node {*     int val;*     struct Node *next;*     struct Node *random;* };*/
typedef struct Node Node;
struct Node* copyRandomList(struct Node* head) 
{Node* pcur=head;while(pcur){Node*copy=(Node*)malloc(sizeof(Node));//创建拷贝节点copy->val=pcur->val;//拷贝数据copy->next=pcur->next;//插入到pcur后面pcur->next=copy;pcur=copy->next;//移动pcur指针}
}

2.原链表中节点的随机指针拷贝 

1.pcur指针重新指向第一个节点,重新遍历链表
进入循环
2.拷贝指针指向pcur的下一个节点
3.如果pcur指针指向节点的随机指针指向NULL,拷贝节点的随机指针则相同
否则拷贝节点的随即指针指向pcur的随机指针的下一个节点

 

 

这一部分实现代码如下

pcur=head;//指针重置while(pcur)//链表随机指针拷贝{Node*copy=pcur->next;if(pcur->random==NULL)copy->random=NULL;//对指向NULL的情况额外处理else{copy->random=pcur->random->next;//随机指针拷贝的关键}pcur=copy->next;}

3.原链表中节点的next指针拷贝,拷贝节点成为单独的新链表  

1.pcur指针重新指向链表第一个节点
2.创建新链表的头指针和尾指针初始都指向空
3.进入循环——拷贝指针指向pcur的下一个节点
next指针指向拷贝指针的下一个节点
接下来将拷贝节点尾插到新链表,并恢复原链表
如果新链表为空,则新链表首尾指针都指向拷贝节点
否则,新链表尾指针的next指向拷贝节点,然后尾指针指向拷贝节点
再将pcur指针指向节点的next指向next指针对应的节点
循环直到pcur走向NULL

这一部分的实现代码如下(并恢复的代码)

pcur=head;Node*newhead=NULL,*newtail=NULL;while(pcur){Node*copy=pcur->next;//指向要拷贝的节点Node*next=copy->next;//指向原链表原本的下一个节点if(newhead==NULL)//将拷贝节点尾插到新链表上{newhead=newtail=copy;}else{newtail->next=copy;newtail=copy;}pcur->next=next;//恢复原链表pcur=next;}return newhead;

不恢复的代码 

pcur=head->next;struct Node*newhead=NULL;struct Node*newtail=NULL;newhead=newtail=head->next;while(pcur->next){pcur=pcur->next->next;newtail->next=pcur;newtail=pcur;}newtail->next=NULL;return newhead; 

三、代码实现 

/*** Definition for a Node.* struct Node {*     int val;*     struct Node *next;*     struct Node *random;* };*/
typedef struct Node Node;
struct Node* copyRandomList(struct Node* head) 
{Node* pcur=head;while(pcur)//链表数据拷贝{Node*copy=(Node*)malloc(sizeof(Node));//创建拷贝节点copy->val=pcur->val;//拷贝数据copy->next=pcur->next;//插入到pcur后面pcur->next=copy;pcur=copy->next;//移动pcur指针}pcur=head;//指针重置while(pcur)//链表随机指针拷贝{Node*copy=pcur->next;if(pcur->random==NULL)copy->random=NULL;//对指向NULL的情况额外处理else{copy->random=pcur->random->next;//随机指针拷贝的关键}pcur=copy->next;}pcur=head;Node*newhead=NULL,*newtail=NULL;while(pcur){Node*copy=pcur->next;//指向要拷贝的节点Node*next=copy->next;//指向原链表原本的下一个节点if(newhead==NULL)//将拷贝节点尾插到新链表上{newhead=newtail=copy;}else{newtail->next=copy;newtail=copy;}pcur->next=next;//恢复原链表pcur=next;}return newhead;
}

http://www.yayakq.cn/news/662045/

相关文章:

  • 北京高端网站制作公司网站实现多模板切换
  • 自建外贸网站企业电子商务网站平台建设
  • 贵州网站建设 零玖伍壹网络广州网页设计网站
  • 一般的手机网站建设多少钱东阳网站建设有哪些
  • cms 网站建设建筑模板厂家大全
  • 惠州企业网站设计wordpress 文章查看次数
  • 厦门网站怎么做棋牌游戏app软件开发
  • 网站建设"淘宝网" 在颜色选取和搭配方面有哪些值得学习的地方.seo软文是什么意思
  • 网站开发工作怎样公司论坛网站建设规划书
  • 网站建设 项目文档给个免费的网址
  • 乌海网站seo广州确诊病例最新消息
  • h5旅游网站开发买一个app软件要多少钱
  • 同城换物网站为什么做不起来网页设计尺寸怎么算
  • 哈尔滨做设计和网站的公司吗网络平台运营管理
  • 公司网站对比那几点优势新乡网站建设费用
  • 吴江建设局网站打不开了网页 转发到wordpress
  • 湖北网站建设xiduyun天创网站
  • 做最最优秀的视频网站网站开发有哪些流程图
  • 用cms建网站卡密提取网站怎么做
  • 河南省建设厅官方网站 吴浩濮阳做网站优化
  • 企业网站建设之域名篇创意宣传片制作
  • 织梦网做网站广州推广策划公司
  • app开发与网站开发的区别郑州地区网站建设公司
  • 做网站关于我们网站seo优化方案
  • 怎样建个人网站wordpress分类栏目字段
  • 泉州网站制作网页网站如何屏蔽中国ip
  • 网站开发前端的工作内容是什么城市轨道建设规范下载网站
  • 上海网站建设优势北京上海网站建设公司哪家好
  • wordpress4.9.8 特别慢seo短视频网页入口引流在线观看网站
  • 不用写代码做的网站wordpress建立