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

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

栈和队列

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

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

队列的链式表示和实现

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

链队运算及指针变化

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

时间: 2024-11-05 20:24:56

数据结构学习心得系列(二)的相关文章

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

本博文意在巩固基础知识,高手请绕过.部分代码和内容参考严蔚敏人民邮电版出版社<数据结构> 树和二叉树 树 树(tree)是n(n≥0)个结点的有限集T,在任意一棵非空树中: 有且仅有一个特定的结点,称为树的根(root), 当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,……Tm,其中每一个集合本身又是一棵树,称为根的子树 树的特点: 非空树中至少有一个结点 —— 根 树中各子树是互不相交的集合 树的基本术语: 结点(node)——表示树中的元素,包括数据项及若

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

本博文意在巩固基础知识,高手请绕过. 数据结构(data structure):数据元素和数据元素关系的集合 数据结构包括逻辑结构和物理结构两个层次. 逻辑结构 数据的逻辑结构有两个要素:数据元素.关系 数据逻辑结构层次关系图 物理结构 物理结构又叫存储结构,存储结构在计算机中主要分两中基本的存储结构:顺序存储结构和联是存储结构. 顺序存储结构:借助元素在存储器中的相对位置来表示数据元素间的逻辑关系,数据元素存放的地址是连续的: 链式存储结构:借助指示元素存储地址的指针表示数据元素间的逻辑关系,

我的MYSQL学习心得(二)

原文:我的MYSQL学习心得(二) 我的MYSQL学习心得(二) 我的MYSQL学习心得(一) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 显示宽度 MYSQL中的整数型数据类型都可以指定显示宽度,而SQLSERVER不行 创建一个表 CREATE TABLE tb_emp( id BIGINT(1)) id字段的数据类型为BIGINT(1),注意到后面的数字1,这表示的是该数据类型指定的显示宽度,指定能够显示的数值中数

Java开发学习心得(二):Mybatis和Url路由

Java开发学习心得(二):Mybatis和Url路由 序号接上一篇Java开发学习心得(一):SSM环境搭建 1.3 Mybatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .MyBatis是一个基于Java的持久层框架.iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几

Telegram学习解析系列(二):这我怎么给后台传输数据?

写在前面: 在iOS开发的过程中,有很多时候我们都在和数据打交道,最基本的就是数据的下载和上传了,估计很多很多的小伙伴都在用AFNetworking与后台数据打交道,可有没有想过,哪天AFNetworking你不能用了或者不会用了怎么办?可能你心中疑惑了,这三方只要更新,存在怎么会不能用或者我怎么会不会用了,在没有看Telegram源码之前,我也是这么想的,看了Telegram源码就不会再这么想了,以后我会把自己看的Telegram源码部分的总结和经验一点点的整理分享出来,整理成这个Telegr

数据结构与算法系列二(复杂度分析)

1.引子 1.1.为什么要学习数据结构与算法? 有人说,数据结构与算法,计算机网络,与操作系统都一样,脱离日常开发,除了面试这辈子可能都用不到呀! 有人说,我是做业务开发的,只要熟练API,熟练框架,熟练各种中间件,写的代码不也能“飞”起来吗? 于是问题来了:为什么还要学习数据结构与算法呢? #理由一: 面试的时候,千万不要被数据结构与算法拖了后腿 #理由二: 你真的愿意做一辈子CRUD Boy吗 #理由三: 不想写出开源框架,中间件的工程师,不是好厨子 1.2.如何系统化学习数据结构与算法?

【Java数据结构学习笔记之二】Java数据结构与算法之队列(Queue)实现

  本篇是数据结构与算法的第三篇,本篇我们将来了解一下知识点: 队列的抽象数据类型 顺序队列的设计与实现 链式队列的设计与实现 队列应用的简单举例 优先队列的设置与实现双链表实现 队列的抽象数据类型   队列同样是一种特殊的线性表,其插入和删除的操作分别在表的两端进行,队列的特点就是先进先出(First In First Out).我们把向队列中插入元素的过程称为入队(Enqueue),删除元素的过程称为出队(Dequeue)并把允许入队的一端称为队尾,允许出的的一端称为队头,没有任何元素的队列

学习CNN系列二:训练过程

卷积神经网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间精确的数学表达式,只要用已知的模式对卷积神经网络加以训练,网络就具有输入.输出之间映射的能力. 其训练算法与传统的BP算法类似,主要分4步,可分为2个阶段: 第一阶段,前向传播阶段: (1)从样本集中取一个样本,将样本输入网络: (2)计算相应的实际输出. 在此阶段,信息从输入层经过逐级的变换,传送到输出层.这个过程也是网络在完成训练后正常运行时执行的过程. 第二阶段,后向传播阶段:

重新学习python系列(二)? WTF?

判断class的类型,可以使用isinstance()函数. isinstance()判断的是一个对象是否是该类型本身,或者位于该类型的父继承链上. >>> a = Animal() >>> d = Dog() >>> h = Husky()>>> isinstance(h, Husky) True>>> isinstance(h, Dog) True 能用type()判断的基本类型也可以用isinstance()判