数据结构学习记录2

线性表:零个或多个数据元素的有限序列。
    线性表包含两大结构:
1、顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。通常用数组来实现这一结构。
2、链式存储结构,是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。它有单链表、循环链表、双向链表和静态链表。
    顺序存储结构和链式存储结构的对比:
顺序存储结构受到存储空间限制,查找操作比较方便,插入和删除操作不方便;链式存储结构具有不受固定的存储空间限制,可以比较快捷的插入和删除操作的特点,不过它查找没有顺序存储结构方便快捷。
栈与队列:
栈是限定仅在表尾进行插入和删除操作的线性表。
允许插入和删除的一端称为栈顶,另一端称为栈底,不含任何数据元素的栈称为空栈。
栈的插入操作,叫作进栈,也称压栈、入栈。
栈的删除操作,叫作出栈,也有的叫作弹栈。
栈的存储结构有顺序存储结构和链式存储结构(简称链栈)。
在顺序存储结构中,如果是两个相同类型的栈,则可以用数组的两端作栈底的方法来让两个栈共享数据,这样就可以最大化地利用数组的空间。
队列是只允许在一端进行插入操作、而在另一端进行删除操作的线性表。允许插入的一端称为队尾 ,允许删除的一端称为队头。
队的存储结构分为顺序存储结构和链式存储结构。在顺序存储结构中为了避免数组插入和删除时需要移动数据,就引入了循环队列,使得队头和队尾可以在数组中循环变化。解决了移动数据的时间损耗,使得本来插入和删除是O(n)的时间复杂度变成了O(1)。
串:
串是由零个或多个字符组成的有限序列,又名叫字符串。本质上,它是一种线性表的扩展,但相对于线性表关注一个个元素来说,串这种结构更多的是关注它的子串的应用问题,如查找、替换等操作。现在的高级语言都有针对串的函数可以调用。对KMP模式匹配算法的学习,就是更有效地去理解index函数当中的实现细节。

你可能感兴趣的:(数据结构,个人学习记录,数据结构,线性表)