学习笔记之数据结构与算法(三)
线性表
线性表是最基本,最简单,也是最常用的一种数据结构,线性表中各数据元素之间的关系是一对一的关系,也就是说在线性表中除了第一个和最后一个数据元素。其他的数据元素都是首尾相接的。线性表是以栈、队列、字符串、数组等特殊线性表的形式来使用的
线性表是由n(n>0)个数据元素(结点)组成的有限序列。
线性表的特点
- 有且仅有一个开始结点
- 有且仅有一个终结结点
- 内部结点都有且仅有一个直接前驱结点和一个直接后续结点
- 线性表还要均匀性和有序性(均匀性是指虽然不同数据表的数据元素可以是各种各样的,但是对于同一线性表的各数据元素必定具有相同的数据类型。有序性是指各数据元素在线性表中的位置只取决于它们的序列,数据元素之间的相对位置是线性的。)
线性表的顺序存储
计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素。优点:存储密度大,缺点是:插入、删除等其他运算不方便
选择排序
首先遍历线性表并将最小的元素与第一个元素进行交换,随后遍历剩佘的元素将第二小的元素与第二个元素进行交换,依此类推直至排序结束。
线性表的链式存储
链式存储用若干地址分散的存储单元存储数据元素,逻辑上相邻的数据元素在物理位置上不一定相邻,必须采用附加信息表示数据元素之间的关系。
单链表
单链表也叫线性链表,由一个个结点链接而成。单链表的结点只有一个存储数据的数据域和一个称为next的指向后继结点的指针域。
循环链表
循环链表是线性表的另外一种链式存储结构,它在单链表的基础上,将表尾结点的指针域指向表头结点,整个链表形成环状结构。双链表
双链表是可以同时在向前和向后两个方向上查找数据元素的单链表。它的结点除了数据域之外,还有previous和next两个指针域,分别指向直接前趋结点和直接后继结点栈
栈的中文解释是存储货物或供旅客住宿的房屋。那么这些存储的物件有什么特点呢,栈就如一个水桶,先进去的水就是栈底,最后进去的就是栈顶,原则是后进先出,先进后出。
顺序栈
顺序栈的特点
- 数据元素存放在连续的存储地址中
- 栈低位置固定不变
- 栈顶位置随进栈、出栈操作而变化