题意:

输入一行字符,其中包含'[' 和 ‘]’, 意思为键盘上的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 破碎的键盘(数组实现链表)相关推荐

  1. UVa - 11988 Broken Keyboard(数组模拟链表)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18693 #include <iostream> #in ...

  2. 集合类(collection、List、Set、Map、HashMap、TreeMap、、Properties、泛型类、可变长参数、增强for循环、Collections、数组与链表)

    集合类 0.集合类概述 1.Collection 概念 (1)Collection接口的API (2)Iterator接口(collection集合的遍历) 案例:collection集合存储学生对象 ...

  3. 保存数组_面试官:讲一讲你对据结构——数组、链表、栈、队列的理解

    一.解释定义 1. 数据结构: 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.再简单描述一下:数据结构就是描述对象间逻辑关系的学科. 如果还是不太清楚下面会举例说明的. 2. 数据存储结 ...

  4. c语言实现线性结构(数组与链表)

    由于这两天看了数据结构,所以又把大学所学的c语言和指针"挂"起来了. 本人菜鸟一枚请多多指教.下面是我这两天学习的成果(数组和链表的实现,用的是c语言哦!哈哈). (一)数组的实现 ...

  5. C++用数组和链表分别实现Queue

    C++用数组和链表分别实现Queue 昨天写了<C++用数组和链表分别实现Stack>,今天就是<C++用数组和链表分别实现Queue>, 队列就是先来的先被处理掉,后来的就等 ...

  6. 链表 + 数组模拟链表

    链表的指针实现 1.指针 #include<iostream> using namespace std; int main(){int a = 5;int *p; // int 型的指针d ...

  7. C++用数组和链表分别实现Stack

    C++用数组和链表分别实现Stack C++学习有段时间了,感觉还是有很多不足啊,今天自己用数组和链表分别实现Stack,当然STL中的Stack肯定不是这么简单,你不妨看一下,说不定有收获呢,若发现 ...

  8. 数组、链表、Hash(转)

    在程序中,存放指定的数据最常用的数据结构有两种:数组和链表. 数组和链表的区别: 1.数组是将元素在内存中连续存放. 链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起. 2.数组 ...

  9. c#数据结构之集合的实现(数组及链表两种实现)

    集合的概念 集合是由一些确定的.彼此不同的成员或者元素构成的一个整体.如果将紧密相关的数据组合到一个集合中,则能够更有效地处理这些紧密相关的数据.代替编写不同的代码来处理每一单独的对象,您可以使用相同 ...

最新文章

  1. 火遍全国的网络热梗“yyds”,创造者被判刑3年
  2. BZOJ1068:[SCOI2007]压缩——题解
  3. Ubuntu安装软件失败
  4. cesium 3dtiles 加载本地数据_Meteva笔记:加载本地观测数据
  5. 赛森机器人_戴森扫地机器人体验:六千元的它,到底好在哪?
  6. uboot和linux内核移植,Uboot与kernel移植总结
  7. c语言程序的多文件组织,C代码多文件的组织
  8. HTML 文本格式化标签
  9. 《Java编程的逻辑》第三部分 泛型与容器
  10. 大牛逝世 = 新人上位 = 科学进步?新研究表明确实如此
  11. SAP License:更改物料基本计量单位
  12. linux 系统基础知识 - vgextend命令
  13. Python Compiling Environment (Anaconda+VS code+GitKraken+Github)
  14. 卸载wps后安装office图标异常的问题
  15. SQL Server研习录(25)——sql server触发器、instered表和deleted表知识详解及示例分析
  16. 服务器网卡bond配置指引
  17. 2018,这一年的腾讯优图,我们总结一下!
  18. arcgis像元大小和分辨率_ArcGIS教程:栅格数据基本词汇
  19. Unity中的屏幕坐标:ComputeScreenPos/VPOS/WPOS
  20. ngrok转发mysql连接_ngrok内网转发

热门文章

  1. kafka安装及常用命令
  2. 【XMPP】XMPP协议之原理篇
  3. JAVA 入门(2)-如何编译源代码
  4. 买无线路由还是买无线AP?
  5. Flutter 一个优美的用户体验的登录页面 抖动提示 文本提示
  6. 05 ansible剧本编写
  7. Number 和 Math 类
  8. TMS320VC5509片内ADC采集
  9. tf.graph函数
  10. EBS功能安全性基本原理