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

石家庄市城乡建设学校网站百度官方客户端

石家庄市城乡建设学校网站,百度官方客户端,国外一个做同人动漫的网站,大数据平台的搭建💕人面只今何处去,桃花依旧笑春风💕 作者:Mylvzi 文章主要内容:详解链表OJ题 题目一:环形链表(判断链表是否带环) 题目描述: 画图分析: 代码实现&#x…

 

  💕人面只今何处去,桃花依旧笑春风💕

作者:Mylvzi 

 文章主要内容:详解链表OJ题 

题目一:环形链表(判断链表是否带环)

题目描述:

画图分析:
 

代码实现:


bool hasCycle(struct ListNode *head) {struct ListNode* slow = head,*fast = head;//定义快慢指针// 进入链表while(fast && fast->next)//为空,就不含有环{fast = fast->next->next;slow = slow->next;if(fast == slow)//相等,环存在return true;}return false;
}

 题目二:相交链表(判断两个链表是否相交)

题目描述:

画图分析:

 

代码实现:

struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {struct ListNode* curA = headA,* curB = headB;int lenA = 1;int lenB = 1;//根据尾结点判断是否相交// 判断尾结点是否相同while(curA->next){curA = curA->next;lenA++;}while(curB->next){curB = curB->next;lenB++;}if(curA != curB)//不等于,不相交{return NULL;}//相同,返回公共结点int gap = abs(lenA - lenB);//得到链表长度差值struct ListNode*longlist = headA,*shortlist = headB;if(lenA < lenB){longlist = headB;shortlist = headA;}//先让长的链表走gap步while(gap--){longlist = longlist->next;}while(longlist != shortlist){longlist = longlist->next;shortlist = shortlist->next;}//出循环-->走到公共结点return longlist;
}

 题目三:链表分割(哨兵位使用)

题目描述:

 

画图分析:

 

代码实现:

class Partition {
public:ListNode* partition(ListNode* pHead, int x) {//创建哨兵位和两个链表struct ListNode* lhead,* ltail;//存放比x小的struct ListNode* ghead,* gtail;//存放比x大的lhead = ltail =(struct ListNode*)malloc(sizeof(struct ListNode));ghead = gtail =(struct ListNode*)malloc(sizeof(struct ListNode));//循环遍历尾插struct ListNode* cur = pHead;while(cur){if(cur->val < x){ltail->next = cur;ltail = cur;}else {gtail->next = cur;gtail = cur;}cur = cur->next;}//不置空,有可能呈环,导致死循环gtail->next = NULL;ltail->next = ghead->next;//链接两个链表struct ListNode* head = lhead->next;free(lhead);free(ghead);lhead = NULL;ghead = NULL;return head;}
};

哨兵位总结:

      “哨兵位”是一种特殊的结点,放在链表头结点之前,可以理解为工具人,就告诉你我是结点,不是NULL,但其本身不存储任何数据,为了方便对链表的链接而设置的!

      出现链表链接使用哨兵位更简单,因为可以避免一种特殊的结点-->NULL,这种情况在之前往往需要单独讨论(if语句),而哨兵位的设立是我们不需要单独对这种情况讨论!

题目四:链表的回文结构(判断是否时回文链表)

题目要求:

 

画图分析:

 

代码实现:

class PalindromeList {
public://第二种写法-->头插
struct ListNode* reverseList(struct ListNode* head){//设置新的头结点,进行头插struct ListNode* newhead = NULL;struct ListNode* cur = head;//头插while(cur){struct ListNode* next = cur->next;cur->next = newhead;newhead = cur;cur = next;}return newhead;
}struct ListNode* middleNode(struct ListNode* head){struct ListNode*slow = head,*fast = head;//开始移动while(fast && fast->next){fast = fast->next->next;//一次移动两步slow = slow->next;}return slow;
}bool chkPalindrome(ListNode* head) {struct ListNode* mid = middleNode(head);//得到中间结点struct ListNode* rmid = reverseList(head);// 逆置中间结点之后的链表while(rmid && head){//不等于-->不是回文链表if(rmid->val != head->val)return false;rmid = rmid->next;head = head->next;}return true;}
};

总结:头插和尾插的区别(画图分析)

 

http://www.hrbkazy.com/news/4776.html

相关文章:

  • 国内网站主机推广合作
  • 网站建设报价方案对比今天头条新闻
  • 网站制作 南京网站制作基本流程
  • 网站建设教程培训广州网页搜索排名提升
  • 购物帮做特惠的导购网站黄页大全
  • 做网站打广告seo有哪些经典的案例
  • 网站建设与推广的策划方案南昌seo管理
  • 联合易网做网站济南优化seo公司
  • jsp项目个人网站开发阿里云域名
  • 制作网站管理系统做百度推广的公司电话号码
  • 微网站怎么做微名片上海快速优化排名
  • 企业网站优化托管网络营销的8个基本职能
  • 建站行业有哪些seo运营经理
  • 舟山网站建设推广互联网医疗的营销策略
  • 网站制作简单协议crm软件
  • 新乡做企业网站的公司cba最新积分榜
  • 电子商务网站开发工具百度快速查询
  • 好看欧美视频网站模板下载 迅雷下载地址宁波优化系统
  • 武汉网址模板建站品牌推广方案ppt
  • 花都区建设工程造价管理网站seo宣传
  • 行业信息网站有哪些重庆搜索引擎seo
  • 无锡商之道网络科技有限公司网站优化排名提升
  • 企业网站有哪些例子关键词云图
  • 网站免费推广怎么做网站优化技术
  • 网页设计与制作实验报告心得体会搜索引擎优化网页
  • 长春专业网站建设竞价推广运营
  • 做直播网站找哪家网站优化大师的功能有哪些
  • 备案用网站建设方案书广州百度网站推广
  • 柳州网站建设11网站引流推广软件
  • 北京定制网站价格世界军事新闻