UVa 11998 破碎的键盘(数组实现链表)
题意:
输入一行字符,其中包含'[' 和 ‘]’, 意思为键盘上的home 和 end 键, 然后模拟字符在键盘上输入。 输入一行最终的结果
分析:
用数组模拟一个链表, 在链表的头尾插入字母然后输出即可, 方法需要多加练习才能练熟, 其实跟邻接表有点像。
为了方便起见,常常在链表的第一个元素之前放一个虚拟结点。
#include <bits/stdc++.h> using namespace std; const int maxl = 100000 + 7; int main() {char str[maxl];int cur, last;int next[maxl];//next[index] 就是str[index]的下一个字母是 str[next[index]]//为了方便起见,常常在链表的第一个元素之前放一个虚拟结点。 所以从str+1开始while(~scanf("%s", str+1)){int len = strlen(str+1);next[0] = 0;//一开始next指向虚拟节点cur = last = 0;for(int i = 1 ; i <= len; i++){if(str[i] == '['){cur = 0;}//光标位于cur后面 cur...|else if(str[i] == ']'){cur = last;}else{next[i] = next[cur];next[cur] = i;/*注意这两句 当cur = 0, i = 1时,next[1] = next[0] ------------ 把虚拟节点接到next[1]上next[0] = 1 ------------ 把0的下一个接为1这就实现了next0转移到了next1 next0 变为 1*/if(cur == last) last = i;cur = i;}}for(int i = next[0]; i != 0; i = next[i]){printf("%c", str[i]);}puts("");} }
转载于:https://www.cnblogs.com/Jadon97/p/7171940.html
UVa 11998 破碎的键盘(数组实现链表)相关推荐
- UVa - 11988 Broken Keyboard(数组模拟链表)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18693 #include <iostream> #in ...
- 集合类(collection、List、Set、Map、HashMap、TreeMap、、Properties、泛型类、可变长参数、增强for循环、Collections、数组与链表)
集合类 0.集合类概述 1.Collection 概念 (1)Collection接口的API (2)Iterator接口(collection集合的遍历) 案例:collection集合存储学生对象 ...
- 保存数组_面试官:讲一讲你对据结构——数组、链表、栈、队列的理解
一.解释定义 1. 数据结构: 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.再简单描述一下:数据结构就是描述对象间逻辑关系的学科. 如果还是不太清楚下面会举例说明的. 2. 数据存储结 ...
- c语言实现线性结构(数组与链表)
由于这两天看了数据结构,所以又把大学所学的c语言和指针"挂"起来了. 本人菜鸟一枚请多多指教.下面是我这两天学习的成果(数组和链表的实现,用的是c语言哦!哈哈). (一)数组的实现 ...
- C++用数组和链表分别实现Queue
C++用数组和链表分别实现Queue 昨天写了<C++用数组和链表分别实现Stack>,今天就是<C++用数组和链表分别实现Queue>, 队列就是先来的先被处理掉,后来的就等 ...
- 链表 + 数组模拟链表
链表的指针实现 1.指针 #include<iostream> using namespace std; int main(){int a = 5;int *p; // int 型的指针d ...
- C++用数组和链表分别实现Stack
C++用数组和链表分别实现Stack C++学习有段时间了,感觉还是有很多不足啊,今天自己用数组和链表分别实现Stack,当然STL中的Stack肯定不是这么简单,你不妨看一下,说不定有收获呢,若发现 ...
- 数组、链表、Hash(转)
在程序中,存放指定的数据最常用的数据结构有两种:数组和链表. 数组和链表的区别: 1.数组是将元素在内存中连续存放. 链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起. 2.数组 ...
- c#数据结构之集合的实现(数组及链表两种实现)
集合的概念 集合是由一些确定的.彼此不同的成员或者元素构成的一个整体.如果将紧密相关的数据组合到一个集合中,则能够更有效地处理这些紧密相关的数据.代替编写不同的代码来处理每一单独的对象,您可以使用相同 ...
最新文章
- 火遍全国的网络热梗“yyds”,创造者被判刑3年
- BZOJ1068:[SCOI2007]压缩——题解
- Ubuntu安装软件失败
- cesium 3dtiles 加载本地数据_Meteva笔记:加载本地观测数据
- 赛森机器人_戴森扫地机器人体验:六千元的它,到底好在哪?
- uboot和linux内核移植,Uboot与kernel移植总结
- c语言程序的多文件组织,C代码多文件的组织
- HTML 文本格式化标签
- 《Java编程的逻辑》第三部分 泛型与容器
- 大牛逝世 = 新人上位 = 科学进步?新研究表明确实如此
- SAP License:更改物料基本计量单位
- linux 系统基础知识 - vgextend命令
- Python Compiling Environment (Anaconda+VS code+GitKraken+Github)
- 卸载wps后安装office图标异常的问题
- SQL Server研习录(25)——sql server触发器、instered表和deleted表知识详解及示例分析
- 服务器网卡bond配置指引
- 2018,这一年的腾讯优图,我们总结一下!
- arcgis像元大小和分辨率_ArcGIS教程:栅格数据基本词汇
- Unity中的屏幕坐标:ComputeScreenPos/VPOS/WPOS
- ngrok转发mysql连接_ngrok内网转发