找到单链表的后数第k个节点
来源:互联网 发布:井冈山大学网络客户端 编辑:程序博客网 时间:2024/06/06 18:32
看到一个面试题,简单的,才下手做的。返回单链表的第k个节点(给出了尾指针),跟那个步长分别为一为二找到中间和最后的那个差不多。
就是定义两个指针,都指向head,然后一个向后移动k步,再同时移动,到达尾巴即可。
代码如下,望不吝赐教!
#include <iostream>using namespace std;typedef int ElemType;class linkList{public:linkList();inline void insert(ElemType elem);void print() const;const ElemType& get_k(int k);private:typedef struct Node{ElemType data;Node* next;Node(ElemType elem){data = elem;next = NULL;}};Node* head;Node* tail;};linkList::linkList(){head = NULL;tail = NULL;}void linkList::insert(ElemType elem){Node* pnew = new Node(elem);if(head){pnew->next = head;}head = pnew;}const ElemType& linkList::get_k(int k){Node* p1 = head;Node* p2 = head;for(int i = 1; i < k; ++i){if(p2->next == NULL){cout << "Error! " << endl;return -1;}p2 = p2->next;}while(p2->next){p1 = p1->next;p2 = p2->next;}return p1->data;}void linkList::print() const{Node* p = head;while(p){cout << p->data << "---->";p = p->next;}cout <<"\n\n";}int main(void){int k = 8;linkList list;list.insert(1);list.insert(2);list.insert(3);list.insert(4);list.insert(5);list.insert(6);list.insert(7);list.insert(8);list.print();cout << "the number of last but " << k << " is:";cout <<list.get_k(k) << endl;return 0;}
- 找到单链表的后数第k个节点
- 找到⼀个未知长度单链表的倒数第K个节点
- 单链表的倒数第K个节点
- 找到倒数第k个节点并返回
- 剑指offer12--找到链表中倒数第k个节点
- 链表的典型题:找到链表倒数K个节点、链表逆转、合并两个链表
- 输出单链表的倒数第K个节点
- 查找单链表的倒数第k个节点
- 找出单链表的倒数第k个节点
- 删除单链表的倒数第K个节点
- 求链表的倒数第K个节点
- 求链表的倒数第K个节点
- 找链表的倒数第k个节点
- 求链表的倒数第k个节点
- 求链表的倒数第k个节点
- 找链表的倒数第k个节点
- 求链表的倒数第k个节点
- 单链表查找倒数K个节点
- 统计IP——多线程统计数据
- 递归的调用
- linux中seq命令用法
- type_traits
- LINUX文件编程基础知识
- 找到单链表的后数第k个节点
- 拨个电话买到火车票
- 组合模式——Composite
- linux下wifi设备的实现逻辑
- 《像外行一样思考,像专家一样实践》3_问题的解决能力与教育
- poj 1028.Web Navigation
- 如何给人留下深刻的印象
- 30个爱情感悟:真话往往最残忍
- java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.w