博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
破损的键盘(模拟链表)
阅读量:5348 次
发布时间:2019-06-15

本文共 1274 字,大约阅读时间需要 4 分钟。

题目:

你在输入文章的时候,键盘上的Home键和End键出了问题,会不定时的按下。

给你一段按键的文本,其中'['表示Home键,']'表示End键,输出这段#include<iostream>

#include
#include
#include
using namespace std;int next[1000],cur=0,last;int main(){ /*模拟链表 有点难以理解 */ char s[1000]; scanf("%s",s+1); for(int i=1; i<=strlen(s+1); i++) { if(s[i]=='[') cur=0; else if(s[i]==']') cur=last; else { next[i]=next[cur]; next[cur]=i; /* 这两句是重点 i 为新节点 cur 可视为浮标节点 next[i] 为新节点的 下一节点的“指针”(并不是下一节点的指针,而是i节点中保存的下一节点的指针,下方同理); next[cur] 为浮标节点的下一节点的“指针” 那么就是让新节点的“下一个节点的指针”指向浮标指针的指向的节点 然后浮标节点的“下一节点的“指针“” 指向 i 节点 由此,完成新节点的插入 此时i 节点在浮标节点后 ,因此利用下方的 cur =i; 使新节点变成浮标节点 顺序不能反,结合说明看图理解 */ if(last == cur ) last =i;//如果浮标节点是尾节点,那么更新尾节点;
}    }    for(int i=next[0]; i!=0; i=next[i])//依次访问节点        printf("%c",s[i]);}

 

核心就是 next[i]=next[cur]相当于指针创建中的 p->next=*L->next;(一个是让next[i]=0,一个是让p->next=NULL) next[cur]=i 相当于指针创建中的 *L->next=p;(一个让cur->i 一个让L的next->p)(这段来源于)

转载于:https://www.cnblogs.com/tttfu/p/10207503.html

你可能感兴趣的文章
Linux常用命令(十一)
查看>>
Linux常用命令(十)
查看>>
实验吧之这就是一个坑
查看>>
Linux常用命令(十二)
查看>>
Linux常用命令(十三)
查看>>
Linux常用命令(十五)
查看>>
Linux常用命令(十四)
查看>>
Linux常用命令(十七)
查看>>
Linux常用命令(十六)
查看>>
Linux常用命令(二十四)
查看>>
4种java定时器
查看>>
Vue.js 教程
查看>>
linux 设置网卡
查看>>
hive 语法 case when 语法
查看>>
Ajax:js读取txt内容(json格式内容)
查看>>
Task 7 买书最低价格问题
查看>>
Selenium3+python自动化007-警告框
查看>>
html5 相同形状的图形进行循环
查看>>
springboot中文官方文档
查看>>
lamdba表达式
查看>>