寻找单链表的倒数第N个节点
来源:互联网 发布:自动化编程语言有哪些 编辑:程序博客网 时间:2024/05/16 08:04
老婆今早面试苹果的radio协议测试岗位(非开发),给了这个题目,当时她是两次遍历(一次找出总节点数M,一次找出第M-N节点),我也想不出更高明的办法
但总觉得伴随指针能做到只遍历一遍,想了想,得解:
#include <iostream>using namespace std;struct Node{ Node(int d, Node *n):data(d), next(n){} int data; struct Node *next;};struct List{ List(const char *c):listHead(0, NULL) { Node *p = &listHead; for (; *c; c++) { p->next = new Node(*c, NULL); p = p->next; listHead.data++;// node count } } Node *FindNthNodeFromBottom(int N) { Node *p = listHead.next; Node *q = p; int step = 0; while (p != NULL) { if (step >= N) { q = q->next;//when q left N steps behind p, then q start move }else{ step++; } p = p->next; } return q; } void printList() { Node *p = listHead.next; while (p) { cout << (char) (p->data) << ' '; p = p-> next; } cout << endl; } Node listHead;};int main(){ List l("wanghaipeng"); l.printList(); int N = 4; Node *p = l.FindNthNodeFromBottom(N); cout << "the " << N <<"th node from bottom of list is : " << (char)(p->data) << endl; return 0;}
0 0
- 寻找单链表的倒数第N个节点
- 寻找链表的倒数第N个节点
- 【经典面试题】寻找单链表倒数第n个节点
- 求链表的倒数第N个节点
- 删除单链表倒数第n个节点
- 删除单链表的倒数第N个节点
- 返回单链表的倒数第n个节点
- 单链表的逆序和倒数第n个节点
- 【经典面试题】寻找单链表倒数第n个节点_C/C++
- 经典面试题】寻找单链表倒数第n个节点_C/C++
- 寻找链表的倒数第k个节点
- 寻找单向链表的倒数第k个节点
- 寻找链表的倒数第K个节点
- 寻找倒数第K个节点...
- 寻找倒数第K个节点...
- CareerCup之2.2 寻找单链表倒数第n个元素
- 删除链表的倒数第N个节点
- 与倒数第N个节点相关的题目
- 数字图像处理--通过矩阵,简化操作(旋转,平移,缩放,切边....)
- Python和C|C++的混编(二):利用Cython进行混编
- 求1~任意数的质数
- Swift入门教程14-构造器
- objective-c-方法-- (NSRange)rangeOfString:(NSString *)aString;
- 寻找单链表的倒数第N个节点
- zoj 3149 Breadtree(朴素DP)
- HDU 4057 Rescue the Rabbit (AC自动机+DP)
- websocket实现过程
- php常用函数(总结)
- 数据结构 第五章 树和二叉树
- Gas Station
- 安装Python的机器学习包Sklearn 出错解决方法
- H.264 JM86 VC++6.0执行