• 数据结构学习心得系列(二)


    本博文意在巩固基础知识,高手请绕过。部分代码和内容参考严蔚敏人民邮电版出版社《数据结构》

    栈和队列

      栈:限定仅在一端进行插入或删除操作的线性表

      栈顶(Top):允许进行插入、删除操作的一端,又称为表尾。

      栈底(Bottom):是固定端,又称为表头。

      空栈:当表中没有元素时称为空栈。

    在栈中最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。

      特点 :后进先出LIFO (Last  In  First  Out)

    栈的应用

      括号匹配的检验

    假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,即([]())或[([ ][ ])]等为正确的格式,[( ])或([( ))或 ()])均为不正确的格式。

      算法思想:设置一个栈,当读到左括号时,左括号进栈。当读到右括号时,则从栈中弹出一个元素,与读到的左括号进行匹配,若匹配成功,继续读入;否则匹配失败,返回FLASE。

    算法描述

    #define TRUE  0
    
    #define  FLASE  -1
    
    SqStack  S ; 
    
    S=Init_Stack() ;  /*堆栈初始化*/
    
    int Match_Brackets( )
    
    {   char ch , x ;
    
    scanf(“%c” , &ch) ;
    
     while (asc(ch)!=13)
    
    {   if  ((ch==‘(’)||(ch==‘[’))  push(S , ch) ; 
    
    else if  (ch==‘]’) 
    
         {  x=pop(S) ; 
    
             if (x!=‘[’)
    
                     {  printf(“’[’括号不匹配”) ; 
    
                         return FLASE  ;  }   }
    
    else if  (ch==‘)’) 
    
          {  x=pop(S) ;
    
              if (x!=‘(’) 
    
                  { printf(“’(’括号不匹配”) ; 
    
                     return FLASE  ;}
    
          } 
    
    }
    
    if  (S.top!=0) 
    
    {    printf(“括号数量不匹配!”) ;
    
          return FLASE  ;
    
    }
    
    else  return TRUE  ; 
    
    }
    

     队列

      队列:限定仅在一端进行插入,而在另一端进行删除操作的线性表。

      队头:允许删除的一端称为队头(front)

      队尾:允许插入的一端称为队尾(rear)

      空队列:队列中没有元素时称为空队列

      特点 :先进先出FIFO (First In First Out)

    队列的链式表示和实现

      队列的链式存储结构简称为链队列,它是限制仅在表头进行删除操作和表尾进行插入操作的单链表。需要两类不同的结点:数据元素结点,队列的队首指针和队尾指针的结点

    链队运算及指针变化

      链队的操作实际上是单链表的操作,只不过是删除在表头进行,插入在表尾进行。插入、删除时分别修改不同的指针。

  • 相关阅读:
    如何优化代码和RAM大小
    Ubuntu14.04用apt在线/离线安装CDH5.1.2[Apache Hadoop 2.3.0]-old
    PHP和Golang使用Thrift1和Thrift2访问Hbase0.96.2(ubuntu12.04)
    Flume+Kafka+Strom基于伪分布式环境的结合使用
    Golang、Php、Python、Java基于Thrift0.9.1实现跨语言调用
    mac10.9+php5.5.15+brew0.9.5的安装
    kafka2.9.2的伪分布式集群安装和demo(java api)测试
    Flume1.5.0的安装、部署、简单应用(含伪分布式、与hadoop2.2.0、hbase0.96的案例)
    ubuntu12.04+proftpd1.3.4a的系统用户+虚拟用户权限应用实践
    ubuntu12.04+kafka2.9.2+zookeeper3.4.5的伪分布式集群安装和demo(java api)测试
  • 原文地址:https://www.cnblogs.com/spilledlight/p/4977667.html
Copyright © 2020-2023  润新知