当前位置:  编程技术>java/j2ee

找出链表倒数第n个节点元素的二个方法

    来源: 互联网  发布时间:2014-10-29

    本文导语:  方法一:利用两个指针p,q,首先将q往链表尾部移动n位,然后再将p、q一起往后移,那么当q达到链表尾部时,p即指向链表的倒数第n个节点。 代码如下:node* find_nth_to_last(node* head,int n) { if(head==NULL || nnext; } if(n>=0) return NULL; while(p!=...

方法一:利用两个指针p,q,首先将q往链表尾部移动n位,然后再将p、q一起往后移,那么当q达到链表尾部时,p即指向链表的倒数第n个节点。
代码如下:

node* find_nth_to_last(node* head,int n) { if(head==NULL || nnext; } if(n>=0) return NULL; while(p!=NULL && q!=NULL){ p=p->next; q=q->next; } return p; }

方法二:可以先计算出节点个数,即从头到尾遍历一次链表,得到个数m,那么倒数第n个元素也即第m-n+1个元素.与方法一是同样的思维,只是具体操作方式不同,代码略.
JAVA代码:
代码如下:

LinkedListNode nthToLast(LinkedListNode head, int n) { if (head == null || n < 1) { return null; } LinkedListNode p1 = head; LinkedListNode p2 = head; for (int j = 0; j < n - 1; ++j) { // skip n-1 steps ahead if (p2 == null) { return null; // not found since list size < n } p2 = p2.next; } while (p2.next != null) { p1 = p1.next; p2 = p2.next; } return p1; }

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 怎么用简洁的方法找出两个数组中不同的元素?
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • 怎样只使用unix的标准工具找出一个文本文件的最长的一行?
  • 请问如何用find找出某个目录下的jsp和java文件?
  • 有什么好命令(方法)找出最后被修改的文件。请大侠帮忙!
  • 如何找出正在访问文件的程序?
  • 怎么找出星期六日的登录日志?
  • 如何实现这个多重搜索,找出同时包含多个字符串的文件
  • 利用正则快速找出两个字符串的不同字符
  • javascript利用正则快速找出两个字符串的不同字符
  • Unix下,用什么工具来编译并能找出错误在第几行?
  • 请高手指点,多线程程序,如何调试找出 SIGSGEV 发生的位置?
  • 有没有什么办法快速的找出应该包含的头文件?
  • 怎样找出某个文件夹中行数最多的文件?
  • 如何找出一个工程引用的它链接的某个库的所有symbol?
  • 用find 如何找出目录中最早建立的文件?
  • find找出屬性為檔案,但不包含子目錄
  • 如何找出一个目录中所有11月2号建立的文件?
  • 1000GB的文件,找出频度最高的10个词
  • 用find 找出文件中目录的个数为0的文件夹
  • 如何用一命令找出当前目录下所有*.PGM, *.MBR, *.MODULE, *MBR文件
  • 如何找出相关的命令


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3