<i id='1jYJl'><tr id='1jYJl'><dt id='1jYJl'><q id='1jYJl'><span id='1jYJl'><b id='1jYJl'><form id='1jYJl'><ins id='1jYJl'></ins><ul id='1jYJl'></ul><sub id='1jYJl'></sub></form><legend id='1jYJl'></legend><bdo id='1jYJl'><pre id='1jYJl'><center id='1jYJl'></center></pre></bdo></b><th id='1jYJl'></th></span></q></dt></tr></i><div id='1jYJl'><tfoot id='1jYJl'></tfoot><dl id='1jYJl'><fieldset id='1jYJl'></fieldset></dl></div>

    1. <legend id='1jYJl'><style id='1jYJl'><dir id='1jYJl'><q id='1jYJl'></q></dir></style></legend><tfoot id='1jYJl'></tfoot>

    2. <small id='1jYJl'></small><noframes id='1jYJl'>

        <bdo id='1jYJl'></bdo><ul id='1jYJl'></ul>

      如何在单次遍历中找到单个链表的中间节点(如果没有给出链表的长度)

      How to find the middle node of a single linked list in a single traversal (if the length of the list is not given)(如何在单次遍历中找到单个链表的中间节点(如果没有给出链表的长度))
          <tbody id='gZaM6'></tbody>
      1. <legend id='gZaM6'><style id='gZaM6'><dir id='gZaM6'><q id='gZaM6'></q></dir></style></legend>
        • <tfoot id='gZaM6'></tfoot>
            • <bdo id='gZaM6'></bdo><ul id='gZaM6'></ul>

              <small id='gZaM6'></small><noframes id='gZaM6'>

              <i id='gZaM6'><tr id='gZaM6'><dt id='gZaM6'><q id='gZaM6'><span id='gZaM6'><b id='gZaM6'><form id='gZaM6'><ins id='gZaM6'></ins><ul id='gZaM6'></ul><sub id='gZaM6'></sub></form><legend id='gZaM6'></legend><bdo id='gZaM6'><pre id='gZaM6'><center id='gZaM6'></center></pre></bdo></b><th id='gZaM6'></th></span></q></dt></tr></i><div id='gZaM6'><tfoot id='gZaM6'></tfoot><dl id='gZaM6'><fieldset id='gZaM6'></fieldset></dl></div>

              1. 本文介绍了如何在单次遍历中找到单个链表的中间节点(如果没有给出链表的长度)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                我有一个问题陈述,如:如何仅在一次遍历中找到单向链表的中间节点,而问题是我们不知道链表中的节点数?"

                I have a problem statement like: "How to find the middle node of a singly linked list in only one traversal, and the twist is we don't know the number of nodes in the linked list?"

                我有一个答案,比如当你遍历链表并增加一个计数器直到你到达链表的末尾时,取一个向量并开始推送所有节点的地址".所以最后我们可以得到列表中的节点数,如果偶数 (counter/2) 或奇数 (counter/2 + counter%2) 给出中间节点数,我们就可以得到 vectore.at(middlenodenumber) 指向中间节点".

                I have an answer like "take a vector and start pushing all the nodes' addresses as and when you are traversing the linked list and increment a counter till you reach the end of the list". So at the end we can get the number of nodes in the list and if even (counter/2) or if odd (counter/2 + counter%2) gives the middle node number and with this we can get vectore.at(middlenodenumber) points to the middle node".

                这很好……但是这是浪费内存来存储一个非常大的链表的所有地址!那么我们怎样才能有更好的解决方案呢?

                This is fine...but this is waste of memory storing all the address of a very large linked list! So how can we have a better solution?

                推荐答案

                以下是步骤:

                • 取两个指针 *p1*p2 指向链接的头部列表
                • 开始循环并递增 *p2,2 次(带空检查)
                • 如果 *p2 不为空,则将 *p1 增加 1 次
                • *p2 达到空值时;你有 *p1 在中心
                • Take two pointers *p1 and *p2 pointing to the head of linked list
                • Start a loop and increment *p2, 2 times (with null checks)
                • If *p2 is not null then increment *p1 1 time
                • When *p2 reaches null; you have got the *p1 at the center

                [注意:如果处理容器类型链表,可以使用迭代器代替指针]

                [Note: You can use iterators instead of pointer if you deal with container type linked list]

                这篇关于如何在单次遍历中找到单个链表的中间节点(如果没有给出链表的长度)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                相关文档推荐

                Is Type(::x); valid?(是类型(::x);有效的?)
                Difference between an inline function and static inline function(内联函数和静态内联函数的区别)
                Compilation fails randomly: quot;cannot open program databasequot;(编译随机失败:“无法打开程序数据库)
                Too many initializers error for a simple array in bcc32(bcc32 中的简单数组的初始值设定项过多错误)
                No Member named stoi in namespace std(命名空间 std 中没有名为 stoi 的成员)
                Error using a constexpr as a template parameter within the same class(在同一个类中使用 constexpr 作为模板参数时出错)
                  <tbody id='XUFtw'></tbody>

                <small id='XUFtw'></small><noframes id='XUFtw'>

                • <bdo id='XUFtw'></bdo><ul id='XUFtw'></ul>

                    1. <tfoot id='XUFtw'></tfoot>
                        <i id='XUFtw'><tr id='XUFtw'><dt id='XUFtw'><q id='XUFtw'><span id='XUFtw'><b id='XUFtw'><form id='XUFtw'><ins id='XUFtw'></ins><ul id='XUFtw'></ul><sub id='XUFtw'></sub></form><legend id='XUFtw'></legend><bdo id='XUFtw'><pre id='XUFtw'><center id='XUFtw'></center></pre></bdo></b><th id='XUFtw'></th></span></q></dt></tr></i><div id='XUFtw'><tfoot id='XUFtw'></tfoot><dl id='XUFtw'><fieldset id='XUFtw'></fieldset></dl></div>
                        <legend id='XUFtw'><style id='XUFtw'><dir id='XUFtw'><q id='XUFtw'></q></dir></style></legend>