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


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

    栈和队列

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

      栈顶(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)

    队列的链式表示和实现

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

    链队运算及指针变化

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

  • 相关阅读:
    Javascript 箭头函数2
    熊二周刊--20160911
    递归
    函数
    Python基本的数据类型内置方法(2)
    python 基础知识条件和循环
    Python初识_基本的数据类型
    计算机网络基础知识
    Python初识
    计算机基础-操作系统
  • 原文地址:https://www.cnblogs.com/spilledlight/p/4977667.html
Copyright © 2020-2023  润新知