zoukankan      html  css  js  c++  java
  • 十二月读书笔记3

    3.4 从无头单链表中删除节点
    问题描述:
    假设有一个没有头指针的单链表。一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个),请将该节点从单链表中删除
    思路:因为没有头节点,所以我们无法找到被删除的节点的上一个节点,所以另辟蹊径,用算法版的“狸猫换太子”
    代码如下:
    pCurrent -> date = p -> Date;
    pCurrent -> Next = p -> next;
    delete pNext;


    3.6 编程判断两个链表是否相交
    问题描述:
    给出两个单向链表的头指针,判断这两个单向链表是否相交。
    精彩解法1:
    把第二个链表接到第一个链表后面,判断这个新链表是否有环
    精彩解法2:
    分别记录下两个链表的最后一个节点,比较它们是否相同
    它的思想是如果相交,那么相交的节点后面的节点一定都是相同的
    拓展问题:
    求出两个链表相交的第一个节点
    首先,我们可以思考假如这两个链表长度相等怎么求?只用从头开始比较两个链表的值,看是否相等,相等就是第一个节点
    那长度不等呢?把长的多余的部分“切掉”不就可以了。遍历得到两个链表的长度,然后忽略掉长的前面多余的部分再开始比较

    4.7 蚂蚁爬杆
    这个问题,就是uva 10881
    这里写一下我对拓展问题的解法
    问题1:
    第i个蚂蚁什么时候走出杆?
    若一开始时有M只蚂蚁向左走,N-M只蚂蚁向右走,则最终会有M只蚂蚁从木杆左边落下,只N-M蚂蚁从木杆右边落下。且前M只蚂蚁从左边落下,后N-M只蚂蚁从右边落下这样看第i只蚂蚁处于哪里就好了
    问题2:
    问蚂蚁一共会碰撞多少次?
    不再具体分析,这里只给出结论
    从头到尾计算每只初始向右走的蚂蚁,右边有多少只初始向左走的蚂蚁,用sum累加后的sum就是答案

  • 相关阅读:
    计算机网络拓扑结构
    中继器,集线器,网桥,交换机,路由器
    网络层次模型
    广播域和冲突域
    Tomcat
    Log4j
    Eclipse实用快捷键
    WebService是什么?
    定时任务处理-Quartz
    MySQL内存表-临时表
  • 原文地址:https://www.cnblogs.com/1329197745a/p/15665102.html
Copyright © 2011-2022 走看看