研发埠

标题: [Microsoft面试]题目:输入一个单向链表,输出该链表中倒数第k 个结点。(链表的倒数第0 个结点为链表的尾指针) [打印本页]

作者: 陈荣莲    时间: 2013-8-16 10:50
标题: [Microsoft面试]题目:输入一个单向链表,输出该链表中倒数第k 个结点。(链表的倒数第0 个结点为链表的尾指针)
链表结点定义如下:struct ListNode{int m_nKey;ListNode* m_pNext;};
作者: 秦静静    时间: 2013-8-16 11:09
Two ways. 1:record the length of the linked list, then go n-k steps. 2: use two cursors.Time complexities are exactly the same.Node * lastK(Node * head, int k) {  if (k<0) error(“k < 0”);  Node *p=head, *pk=head;  for (;k>0;k--) {    if (pk->next!=NULL) pk =pk->next;    else return NULL;  }  while (pk->next!=NULL) {    p=p->next, pk=pk->next;  }  return p;}




欢迎光临 研发埠 (http://bbs.yanfabu.com/) Powered by Discuz! X3.2