在Linux系统中,用户通过cd
命令来切换工作目录。给定一个当前工作目录的绝对路径和一个相对路径命令,要求输出执行该命令后用户的新工作目录,且以最简洁的绝对路径形式表示,同时还需输出在命令执行过程中经过的最深目录层级数。输入包括当前工作目录的绝对路径和cd
命令的相对路径,输出则包含用户新目录的绝对路径和最深层级数的两个数值。例如,若输入为/home/hello
和cd .././/world/
,则输出为/home/world
和2
,表示最终目录和经过的最深层级数。
使用栈来模拟路径变化是通过利用栈的后进先出(LIFO)特性来实现文件系统的路径导航。首先,将当前路径和目标路径用“/”分割为路径片段,并依次处理。当前路径中的有效目录名依次入栈,表示进入对应的子目录;遇到“..”时,栈顶元素弹出,表示返回上一级目录。对于目标路径的处理,如果是有效目录,则入栈;如果是“..”,则弹出栈顶目录。在操作过程中,栈的最大深度反映了所到达的最大目录层级。
Linux系统中,绝对路径是从根目录开始的完整路径,即以'\'开头,相对路径是从当前工作目录开始的路径,以'.'、'..'或当前目录的子目录名开始。某用户便用'cd' 相对路径"的指令来切换工作目录,假设其使用的相对路径包含如下部分:
一个点'.'表示当前目录;
两个点'..'表示上一级目录,根目录的上一级仍然是根目录;
斜杠'/'用于分割目录,连续的多个斜杠等价于单个斜杠;
其他字符串均代表目录名,如'...'、'hello',且假设目录都存在;
请计算出用户在使用'cd 相对路径'指令后的工作目录,要求:
第一行为当前工作目录的绝对路径,为最简洁形式;字符数范围[1,100];
第二行为用户执行的cd相对路径命令,cd和相对路径之间有一个空格隔开,相对路径的字符数范围[1,100],注意cd和空格还有3个字符;
第一行为用户执行'cd相对路径'指令后的当前工作目录,要求以最简洁的绝对路径形式输出。
第二行为指令过程中经过的最深目录层级数。
输入
/home/hello
cd .././/world/
输出
/home/world
2
说明
指令执行过程中进入的目录依次为:/home/hello、/home、/home/world,最终目录为/home/world,最深层次为2。
输入
/home/hello
cd world/.../../.
输出
/home/hello/world
4
说明
...也是合法目录名:
指令执行过程中进入的目录依次为:$/home/hello、/home/hello/world、/home/hello/world/...、/home/hello/world$,最终目录为/home/hello/world,最深层级为4