数据结构和算法
Aaron6013
敲代码的鲁蜜
展开
-
队列
参考资料:《大话数据结构》定义队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。允许插入的一端称为队头,允许删除的一端称为队尾。简单的说,就是我们生活中排队买票,队头的人买完离开(删除),新来的人在队尾排队买票(插入)。循环队列...原创 2020-05-18 22:47:20 · 1957 阅读 · 2 评论 -
栈的应用——四则表达式求值
假如现在设计一个计算器,接收用户输入,计算相应结果并输出。当用户输入为“9 + (3 - 1) * 3 + 10 / 2”时,你怎么设计使其能够输出正确的结果“20”?后缀表达式上述表达式中,由于我们是一个一个数字和符号输入给程序的,故如何让程序知道运算优先级是个问题(比如,程序怎么知道要先算括号里面的内容)。我们可以通过将上面正常的表达式(中缀表达式)转换为后缀表达式,然后经过相应的操作即可获得最终结果“20”。具体的后缀表达式为:“9 3 1 - 3 * + 10 2 / +”。由于其所有的符.原创 2020-05-18 21:13:56 · 270 阅读 · 0 评论 -
栈
参考资料:《大话数据结构》栈(Stack)说起栈,应该都会想起“先进后出”这四个字,之前在考计算机二级的时候看过一些数据结构的知识,当时也就记住了这四个字,也不太清楚具体可以在哪些方面应用,直到后来系统的学习了数据结构,才发现原来可以这么搞。1. 定义栈是限定仅在表尾进行插入和删除操作的线性表。故栈是线性结构,可以想象成水杯,水只能从一个口进出。把允许插入和删除的一端(杯口)称为栈顶,另一端(杯底)称为栈底。向栈中插入元素称为压栈,也称进栈、入栈,从栈中删除元素称为弹栈,也称出栈。栈顶指针(.原创 2020-05-15 18:13:54 · 986 阅读 · 0 评论 -
线性表的链式储存结构
参考资料:《大话数据结构》定义还是可以想象成一串糖葫芦,可以通过一条线把他们串起来(首先要满足线性表的定义)。只不过现在这串糖葫芦上的每个山楂不是存在一起了,而且除了山楂,每个山楂都附有下一个山楂所在的位置。我们把上面每一个山楂称为一个结点,把山楂称为数据域,下一个山楂所在的位置称为指针域。所有的结点(山楂)构成了线性链表。把链表中第一个结点称为头结点,头结点的数据域不存储任何有效数据。将头结点的存储位置称为头指针。将第一个有效结点称为首结点。同时规定,线性链表的最后一个结点的指针域为空.原创 2020-05-14 19:02:12 · 1277 阅读 · 0 评论 -
线性表的顺序存储结构
参考资料:《大话数据结构》线性表(List)的定义书中给出的定义为:零个或多个数据元素的有限序列。可想象成一串糖葫芦(用一根线可以把所有元素串起来)。特点:元素之间是有序的元素的个数是有限个当线性表元素的个数n定义为线性表的长度 ,当n=0时,为空表。线性表的顺序存储结构1. 定义用一段地址连续的存储单元(数组)依次存储线性表的数据元素。定义一个线性表需要两个元素,即数组的长度和当前线性表中元素的个数(线性表中的n)。数组的长度分配后一般不可变,而线性表中的个数n可以改变,并且.原创 2020-05-13 18:08:31 · 561 阅读 · 0 评论