寻找单链表中倒数第k个元素
来源:互联网 发布:姚明生涯平均数据 编辑:程序博客网 时间:2024/05/22 07:53
原理:设置快慢指针,快指针和慢指针初始时都指向链表首节点,然后快指针向后走k个单位,再让慢指针和快指针同时向后走,当快指针的值为空时慢指针指向的节点的数据域即为所求。
算法:
#include<iostream>using namespace std;typedef int ElemType;typedef struct _NODE_//节点声明,头结点数据域存放链表长度{ ElemType data; struct _NODE_ *next;}Node,*pNode,*List;void search(List,int,int&);//寻找倒数第k个元素void printList(List);int main(){ int size; cin>>size; ElemType data; List list = (pNode)malloc(sizeof(Node)); if(!list) { return -1; } list->data = 0; list->next = NULL; for(int i = 0; i < size;i++) { cin>>data; pNode pNew = (pNode)malloc(sizeof(Node)); if(!pNew) { return -1; } pNew->next = list->next; pNew->data = data; list->next = pNew; list->data++; } cout<<"print list:"; printList(list); int index,e; cin>>index; search(list,index,e); cout<<"e = "<<e; return 0;}/*** 寻找倒数第index个元素,找到则将该元素的值赋给e,否则直接返回.* 1<=index<=list.size()***/void search(List list,int index,ElemType &e){ if(!list || index<0 || index>list->data)//参数判断 return; pNode p,q;//设置快慢指针 p = q = list->next; while(index-->0) { /*if(!q) { return; }*/ q = q->next; } while(q) { p = p->next; q = q->next; } e = p->data;}void printList(List list){ if(!list) { return; } pNode p = list->next; while(p) { cout<<p->data<<" "; p = p->next; } cout<<endl;}测试:
1 0
- 寻找单链表中倒数第k个元素
- 寻找单链表中倒数第k个结点
- 查找单链表中倒数第k个元素
- 查找单链表中倒数第k个元素
- 找出单链表中倒数第 k 个元素
- 查找单链表中倒数第k个元素
- 寻找倒数第K个节点...
- 寻找倒数第K个节点...
- 寻找链表中倒数第k个结点
- 寻找单链表倒数第m个元素
- 寻找倒数第m个元素
- 取单链表倒数第k个元素
- 取单链表倒数第k个元素
- 链表中倒数第K个元素,
- 求单链表的倒数第k个元素
- 查找单链表倒数第k个元素
- 单链表查找倒数第k个元素
- 找单链表中倒数第K个元素
- php学习笔记---PHP生成二维码名片,并把名片内容添加到联系人中
- or1200处理器中QMEM模块的作用
- 【深入Java虚拟机】之七:Javac编译与JIT编译
- Is Python call-by-value or call-by-reference? Binding Names to Objects
- Basic表示一个简单的属性
- 寻找单链表中倒数第k个元素
- OneToMany描述一个一对多的关联
- 分布式数据库【4、可用性、CAP原理、BASE原理】
- 【常规解题报告】C++格式化输出和关于字符串的一些常用法
- 苹果推送APNS自己总结
- AS3 Starling塔防教程——第二部分——游戏状态
- 第1章引论
- char* 字符串转QString
- javascript 笔记之作用域