VJ---链表训练,查找,输出前一个和后一个
来源:互联网 发布:java中求成绩的最大值 编辑:程序博客网 时间:2024/05/16 01:27
学会了单向链表,我们又多了一种解决问题的能力,单链表利用一个指针就能在内存中找到下一个位置,这是一个不会轻易断裂的链。但单链表有一个弱点——不能回指。比如在链表中有两个节点A,B,他们的关系是B是A的后继,A指向了B,便能轻易经A找到B,但从B却不能找到A。一个简单的想法便能轻易解决这个问题——建立双向链表。在双向链表中,A有一个指针指向了节点B,同时,B又有一个指向A的指针。这样不仅能从链表头节点的位置遍历整个链表所有节点,也能从链表尾节点开始遍历所有节点。对于给定的一列数据,按照给定的顺序建立双向链表,按照关键字找到相应节点,输出此节点的前驱节点关键字及后继节点关键字。
Input
第一行两个正整数n(代表节点个数),m(代表要找的关键字的个数)。接下来n行每行有一个整数为关键字key(数据保证关键字在数列中没有重复)。接下来有m个关键字,每个占一行。
Output
对给定的每个关键字,输出此关键字前驱节点关键字和后继节点关键字。如果给定的关键字没有前驱或者后继,则不输出。给定关键字为每个输出占一行。
Sample Input
10 31 2 3 4 5 6 7 8 9 0350
Sample Output
2 44 69
#include <stdio.h>#include<stdlib.h>struct B{ int date; struct B *next;}*head;int main(){ int n,m,i,j,a; struct B *p,*q,*r; head=(struct B *)malloc(sizeof(struct B)); head->next=NULL; p=(struct B *)malloc(sizeof(struct B)); scanf("%d %d",&n,&m); p=head; while(n--) { r=(struct B *)malloc(sizeof(struct B)); scanf("%d",&r->date); p->next=r; r->next=NULL; p=r; // printf("%d ",p->date); } for(i=0; i<m; i++) { p=head->next; scanf("%d",&n); j=0; while(p!=NULL) { if(p->date==n&&j==0&&p->next!=NULL) { printf(" %d\n",(p->next)->date); break; } else if(p->date!=n&&((p->next)->date)==n&&((p->next)->next)==NULL) { printf("%d\n",p->date); break; } else if((p->date)!=n&&((p->next)->date)==n&&((p->next)->next)!=NULL) { printf("%d %d\n",p->date,p->next->next->date); break; } p=p->next; j++; } } return 0;}
0 0
- VJ---链表训练,查找,输出前一个和后一个
- jquery实现前一个和后一个效果
- jQuery - 综合实例 - 实现前一个和后一个效果
- 【管道】:前一个命令的输出,作为后一个命令的输入
- 建立和输出一个简单链表
- 建立和输出一个简单链表
- JS取得当前节点的前一个和后一个节点
- 获取一个字节后6位,和一个字节前2位
- js根据当前时间的前一个月和后一个月设置默认时间
- python求一个时间点的前一个月和后一个月
- 登陆成功后返回前一个页面
- 登陆成功后返回前一个页面
- 反向输出一个链表
- 判断一个序列是否是二叉查找树的后序、前序、中序遍历序列
- WdatePicker判断后一个日期比前一个大
- 前一个activity调用后一个activity的内容
- 如何建立和输出一个简单链表
- 建立和输出一个简单的链表
- Android ListFragment使用
- 黑马程序员 【】java学习之路——GUI开始简析二
- Linux能ping通IP,ping不通域名
- 什么是响应式网页设计?
- HDU 1016 Prime Ring Problem DFS
- VJ---链表训练,查找,输出前一个和后一个
- 避免死锁之银行家算法
- 网络流-最大流问题 ISAP 算法解释
- T-SQL系列之查看所有数据库大小、恢复模式等信息(MSSQL)
- 3D变换:模型,视图,投影与Viewport[Matrix]
- 光流法简单介绍
- 由单目标跟踪实现多目标跟踪的思想框架
- HDU 1258 Sum It Up DFS
- 页置换算法FIFO、LRU、OPT