`
kongweile
  • 浏览: 517414 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

linux中的pushd命令及栈原理

 
阅读更多

今天看了linux下面的pushd的命令:感觉不错。
我们可以将目录pushd到目录栈中,然后通过pushd进行切换目录。
但是这个命令多了一个功能 +n和-n。就将对栈中的元素进行移动,其实pushd不添加参数就是移动栈中元素的。
这个是怎么移动的哪,我看网上介绍不是很清楚,自己打开数据结构,看了一下。
栈是限定在表的一端进行元素的插入和删除运算的线性表,将进行插入和删除的这一端称为栈顶,另一端称为栈底。
栈的基本操作有下面几类:
(1)InitStack(S)
     构造一个空栈S。
(2)StackEmpty(S)
     判栈空。若S为空栈,则返回TRUE,否则返回FALSE。
(3)StackFull(S)
     判栈满。若S为满栈,则返回TRUE,否则返回FALSE。
注意:该运算只适用于栈的顺序存储结构。
(4)Push(S,x)
     进栈。若栈S不满,则将元素x插入S的栈顶。
(5)Pop(S)
     退栈。若栈S非空,则将S的栈顶元素删去,并返回该元素。
(6)StackTop(S)
     取栈顶元素。若栈S非空,则返回栈顶元素,但不改变栈的状态。
对于栈的基本操作命令:
1,操作1,2,3我们就不用考虑了,这三个命令在调用之前已经处理了,对我们使用者是透明的。
2,操作4,进栈:pushd 目录  就是这个操作
3,操作5,退栈:popd  就是这个操作
4,操作6,取栈顶元素,好像没有这个操作,但其实用dirs查看这个栈中所有元素。
加强的栈功能:
1,对于没有参数的pushd,其实就是将栈顶的第一个元素和第二元素交换位置。
提示:这个操作的所有操作,当前目录显示的有当前栈中第一个元素。
2,push +n和-n是我主要解释的。
这个命令中有队列的影子的。栈中元素移动时,都是从栈顶移出,然后插入到栈底。
(1)我们将栈按像数组一样进行编号,从栈顶开始:0,1,2,3 ...
pushd +n 不是将编号为n的移到栈顶,移出的0到n-1个元素依次插到栈底。
例如:栈中的元素为a,b,c,d
pushd +1后元素为b,c,d,a
pushd +2后元素为c,d,a,b
pushd +0后元素没有变化:a,b,c,d
(2)对于pushd -n命令和上面一样,只是编号不一样。
这次编号从栈底从开始(假如有4个元素):-3,-2,-1,-0
pushd -n,将编号为-n的移到栈顶,移出的从栈顶到-n+1的元素依次插到栈底。
例如:栈中的元素为a,b,c,d
pushd -1后元素为c,d,a,b
pushd -2后元素为b,c,d,a
pushd -0后元素没有变化:d,a,b,c
(3)总结一下:
假设有n个元素,那么pushd -i 与pushd +(n-1-i) 是相同的。
例如有4个元素的话:
pushd -2与pushd +(4-1-2)是相同的。
这样就清楚这个命令对栈中元素是怎么移动的了。

分享到:
评论

相关推荐

    Linux操作系统中巧用CD和Pushd切换目录

    CD命令是Linux中最基本的目录切换命令。使用cd命令可以改变当前目录,例如键入cd,空格,然后是子路径名(例如:cd Documents),再按回车键。也可以键入cd,空格,两个点,然后按回车键,以进入当前目录的上一级...

    Linux 命令 Linux常用命令全集.CHM 电子书

    - **用途**: `pushd` 命令将当前目录压入目录栈,并将目录栈顶部的目录设为当前目录。 - **语法**: `pushd [directory]` - **示例**: `pushd /etc` 将 `/etc` 压入目录栈并将其设为当前目录。 **1.1.10 弹出目录栈 ...

    linux 切换路径使用方法指南.docx

    在 Linux 命令提示中,用 cd 命令来改变当前目录,用 pushd 命令来在不同目录间切换。通过使用 pushd 命令,可以避免重复输入完整的路径名,节省时间和精力。 9. 使用命令行解释器中的历史记录 用命令行解释器中的...

    Linux系统中巧用CD和Pushd切换目录

    在Linux的多目录命令提示符中工作是一种痛苦的事情,在Linux命令提示中,可以用cd命令来改变当前目录。用pushd实现在不同目录间切换。文中介绍了利用cd和pushd切换目录的技巧有助于你节省时间和精力。

    linux shell之pushd、popd和dirs的使用讲解

    `pushd`命令允许我们将一个目录添加到栈中。当我们需要保存当前目录以便稍后返回时,可以使用`pushd .`来添加。此外,`pushd`还可以接受一个路径参数,将该路径推入栈中。例如,如果我们已经切换到`dir1`,然后使用...

    linux 常见命令列表

    Linux 常见命令列表 Linux 操作系统提供了许多实用的命令,以下是常见的 Linux 命令列表: 文件搜索 ...这些命令都是 Linux 操作系统中的常见命令,掌握这些命令可以帮助您更好地使用 Linux 操作系统。

    华为内部学习资料——Linux常用命令及基础知识介绍

    文件操作是Linux中最基础也是最常用的操作之一,主要包括目录操作、文件查找、文件浏览、文件编辑、文件归档及压缩和文件链接等方面。 **2.1 目录操作** - **`pwd`**:显示当前工作目录。 - **`ls`**:列出目录...

    linux新手常用命令

    ### Linux新手常用命令详解 ...以上命令是Linux系统中非常基础且常用的命令,对于初学者来说掌握这些命令的基本用法是非常重要的。通过实践这些命令,可以帮助你在日常工作中更加高效地管理Linux系统。

    Linux命令速查手册

    - **`pushd`** 和 **`popd`**:用于管理目录栈,方便用户在多个目录间快速切换。 ##### **2. 文件操作** - **`mkdir`**:创建目录。 - **`rmdir`**:删除空目录。 - **`cp`** 和 **`mv`**:复制和移动文件或目录。 ...

    Linux操作系统命令大全

    在本篇文章中,我们将详细介绍《Linux操作系统命令大全》中涉及的关键知识点。这份指南旨在为初学者提供全面且易于理解的Linux命令介绍,帮助他们快速掌握常用的Linux命令及其用法。 #### 1. 文件传输 **1.1 目录*...

    ubuntu-编译时出现-bin-sh-1-pushd- not found.pdf

    - **命令不兼容**:当Makefile或构建脚本中使用了`pushd`或`popd`等bash特有的命令时,在dash环境下执行这些脚本时就会报错,因为这些命令在dash中不可用。 - **符号链接**:在Ubuntu系统中,`/bin/sh`实际指向的...

    Linux和Win的基础命令.docx

    19. **寻找相关命令**: `apropos` 在Linux中可以查找与关键字相关的命令,Windows可能需要使用搜索引擎。 这些基础命令构成了Linux和Windows操作系统交互的基础,熟练掌握它们能显著提高工作效率。通过不断地练习和...

    linux命令详细讲解

    Linux命令是Linux操作系统中进行系统管理、文件操作和网络交互的主要工具。这篇PPT详细讲解了众多基础到高级的Linux命令,旨在帮助初学者全面了解并掌握Linux的日常使用。 一、基本网络命令: 1. **Wget**:用于从...

    linux-101-hacks

    - **操纵目录栈**:介绍如何使用pushd和popd命令在目录之间更方便地切换。 - **更正目录名**:提供修改错误目录名的技巧。 ### 第二章 - 基本命令 - **Grep**:Grep是一个强大的文本搜索工具,支持正则表达式,可以...

    linux命令大全,想学linux的从这里开始

    ### Linux命令大全详解 Linux作为一款强大的开源操作系统,在服务器领域占据着极其重要的地位。对于希望学习和掌握Linux操作系统的用户来说,熟悉并掌握其丰富的命令是必不可少的基础技能之一。本文将对部分常用的...

    linux命令切换目录的使用方法

    理解目录栈的工作原理,以及如何利用 `pushd` 和 `popd` 管理这个栈,对于经常在多个项目或目录之间切换的用户来说尤其重要。通过合理运用这些命令,你可以避免反复输入完整的路径,提高工作效率。

Global site tag (gtag.js) - Google Analytics