线性表
- 顺序表:各个单元的存放地址连续,代表有Array
- 链表:地址不连续,一个单元中存放着相邻节点的地址信息
稀疏数组的概念和使用
- 概念:例如将一个五子棋棋盘保存当前棋盘中棋子的信息,用二维数组保存,但数组很大,棋子数量很少,就会有很多空的数组单元,浪费存储空间。稀疏数组就是用来保存这种数据的一种数据结构。
- 稀疏数组是一个多行3列的结构,行数代表原二维数组中的有效数据个数,3列中分别存放有效数据原始的(行,列,值)。第一行保存原数组的行数、列数、有效数据个数。
- 当需要恢复原数组时,通过将稀疏数组的第一行构建一个二维表,再通过将稀疏数组的其余行中的信息添加在构建的二维信息中,就恢复了。(添加一个信息:保存二维数组在文件中,可以通过Stringbuilder将数组 放在字符串中,用一个标识分开列和行,读取的时候以标识符分割字符串)
队列
- 队列和C++中的队列有相似的地方,队列是先进先出的数据结构,基本结构是一个数组,通过front 和rear代表队列的头和为,队列的存取的判断都通过这两个标识来区分、修改。读的时候,判断是否为空,就判断front和rear是否相等。存的时候先判断是否满,就判断rear是否等于队列的长度减一。
- 其中又有环形队列,环形队列中的判断和普通队列不同,标识的符号位置也不同,front指向第一个元素,rear指向最后一个元素的后一位。判断为空的方法为(front+1==rear);判断队列满的方法是(rear+MaxSize-front)%MaxSize==MaxSize);
- 后移的方法为((front+1%)maxSize).
链表
- 是由节点组成的数据结构
- 一个节点存放有效数据和下一个节点的存储地址(引用)
- 存储的地址不连续
- 带头结点的链表和不带头结点的链表
- 链表的创建和增删改查
创建一个节点类,包含几个节点数据和下一个节点类(next)。再创建一个链表管理类,管理类中,包含床架链表头结点和链表的各种增删改查操作函数。 - add方法
在管理类的对象中,从head节点开始,查找next为空的节点,并将新建的节点赋值给next,添加完成。 - 显示链表
遍历链表,先判断是否为空(head.next=null),则直接退出,不为空,创建一个辅助变量nodetemp指向head.next节点,并输出。while(TRUE)进行循环,将 nodetemp指向下一个节点,再判断是否为空。为空则退出。