博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
路径解析(栈的应用
阅读量:3951 次
发布时间:2019-05-24

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

在这里插入图片描述

在这里插入图片描述

为了做这道题,我又重新去学习了string类,太阔怕了

这道题题目很长,很烦,不想看,于是乎,提取重点来啦:如下图,是一个常见的目录,对吧根目录名字就是/..表示返回上级目录/和./之类的都是分隔符,不用管它就是了本题就是现在你处在某个目录下,你输入一堆目录,然后把它们化为标准格式就OK比如第一个f1文件夹就是    /d1/f1f3文件夹    /d2/d3/f3但是你输入的文件格式可能不对,比如f3文件夹,你输入/d2/./d3///f3/,题目要求你需要把它弄成/d2/d3/f3还有就是当前目录是/d1,你输入../d2/d3/f3,..代表返回上级目录,所以你从d1返回根目录/,然后进入d2,d3,f3,所以你应该把它标准化为/d2/d3/f3

在这里插入图片描述

#include
#include
#include
using namespace std; int n;//路径个数string now,path,st;//当前目录,输入目录字符串,st相当于tmpdeque
p;//绝对路径以"/"开头//相对路径不以"/"开头int main(){
cin>>n; cin>>now;//输入当前路径 cin.get();//消除换行符的影响 while(n--){
p.clear();//初始化清空栈 getline(cin,path);//输入目录 if(path.length()==0)//如果输入为空行,输出当前目录 path=now; if(path[0]!='/'){
//相对路径 ,那么就把它们连接起来 st=path; path=now; //str.append连接函数,包含在C++ string类里面 path.append(1,'/'); path.append(st); } for(int i=0; i
>st){
//读入一个字符串,每遇到空格停止,直到读完,循环结束 if(st==".") continue; else if(st==".."&&!p.empty())//返回上级目录 p.pop_back(); else if(st!="..")//如果是路径名,就让它入栈 p.push_back(st); } cout<<"/";//输出/ ,表示目录开始 for (int i=0;i
0) cout <<"/"; //在开始删掉的空格处补上目录需要的/ cout<

转载地址:http://xdwzi.baihongyu.com/

你可能感兴趣的文章
XXL-Job使用
查看>>
如何在SwaggerAPI中添加统一授权认证
查看>>
多线程
查看>>
【Linux】Centos7 常用命令
查看>>
【Redis】Centos7下安装Redis
查看>>
【Redis】Centos7下搭建Redis集群
查看>>
【Redis】Centos7下搭建Redis集群——哨兵模式
查看>>
【Linux】本地ping不同VM虚拟机
查看>>
【SpringCloud】Hystrix
查看>>
乐观锁、悲观锁、公平锁、可重入锁
查看>>
快速阅读——《认知篇》
查看>>
一本书的学习
查看>>
如何画思维导图?
查看>>
数据库范式简单讲解(1NF、2NF、3NF、4NF、BCNF)
查看>>
快速阅读——《技能篇》
查看>>
快速阅读——《应用篇》
查看>>
活锁、死锁和饥饿
查看>>
进制转换
查看>>
【UML】静态视图分析示例
查看>>
【UML】动态视图分析示例
查看>>