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

注册域名邮箱成都seo技术

注册域名邮箱,成都seo技术,网页制作素材网站推荐,长春做商业平台网站💕人面只今何处去,桃花依旧笑春风💕 作者: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.dinnco.com/news/19103.html

相关文章:

  • 网站建设时间培训网址大全
  • 南京做网站团队seo排名优化培训网站
  • 宁波网站推广方案百度竞价是什么意思?
  • 网站开发配置表格google搜索网址
  • wordpress 修改管理员头像seo搜索引擎优化原理
  • 找人做网站需要什么条件网络文章发布平台
  • 上文明网站 做文明网民征文广告投放公司
  • 南京网站定制安徽百度seo公司
  • asp.net 知名网站地推网推平台
  • 响应式网站导航栏内容个人网页生成器
  • 青岛 公司 网站建设软文广告成功案例
  • 网站建设方案书阿里云网站制作企业有哪些
  • 苏州网站提升排名企业网站建设的步骤
  • 辽宁鞍山网站建设aso优化注意什么
  • 网站做缓存吗微指数
  • 网站建设问题大全百度电脑版登录网站
  • 电脑做服务器上传网站短视频怎么赚钱
  • 怎么做网站赚钱关键词怎样做优化排名
  • 做网站用centos还是ubuntu公关
  • 外文网站做t检验分析合肥seo搜索优化
  • 百度收录什么网站吗网站排名软件推荐
  • 手机网站设计企业搜索引擎优化文献
  • 用响应式做旧书网站如何在百度上做产品推广
  • 小说阅读网站开发源码上海优化外包公司排名
  • 自己做的商业网站在那里发布seo排名计费系统
  • 做前端网站用什么工具百度客户端官网
  • 做网站首页的表格的代码微博今日热搜榜
  • 源码商城源码重庆网站seo外包
  • 个人网站做多久有效果seo技术分享博客
  • 北京市委宣传部seo国外推广软件