"线性表"
线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列。一种典型的线性结构。除第一个元素外,每个元素有且仅有一个直接前驱。除最后一个元素外,每个元素有且仅有一个直接后继。
线性表的特点:
1. 表中元素的个数有限
2. 表中元素具有相同逻辑上的顺序性,在序列中各元素有先后次序。
3. 表中元素都是数据元素,每一个元素都是单个元素
4. 表中元素的数据类型相同。这意味着每一个元素占有相同大小的存储空间
5. 表中元素具有抽象性。即仅讨论元素间的逻辑关系,不考虑元素究竟表示什么内容
线性表的顺序表示(顺序表)
顺序表是用一组地址连续的存储单元,依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻。特点:表中元素的逻辑顺序与其物理顺序相同。顺序表最主要的特点是随机访问,即通过首地址和元素序号可以在O(1)的时间内找到指定的元素。顺序表的存储密度高,每个结点只存储数据元素。
顺序表的基本操作:
1. 插入操作:在顺序表的第i个位置插入元素e。
2. 删除操作:删除表中的第i个元素e。
3. 查找操作:在顺序表L中查找元素值等于e的元素的位置序号,并返回其序号。
顺序表的插入操作:
1. 首先将顺序表第i个位置的元素依次向后移动一个位置。
2. 然后将元素e插入第i个位置。
注意:移动元素要从后往前移动元素,即:先移动最后一个元素,再移动倒数第二个元素,依次类推;插入元素之前要判断插入的位置是否合法,顺序表是否已满,在插入元素之后要将表长L->length++。
顺序表的删除操作:
1. 删除表中的第i个元素e。
2. 删除数据表中的第i个元素,需要将表中第i个元素之后的元素依次向前移动一位,将前面的元素覆盖掉。
移动元素时要想将第i+1个元素移动到第i个位置,在将第i+2个元素移动i+1的位置,直到将最后一个元素移动到它的前一个位置,进行删除操作之前要判断顺序表是否为空,删除元素之后,将表长L->length--;
顺序表的查找操作:
1. 在顺序表L中查找元素值等于e的元素的位置序号,并返回其序号。
线性表的链式表示(单链表)
链表是动态分配存储空间的链式存储结构。线性表的链式存储又称为单链表。它是指通过一组任意的存储单元来存储线性表中的数据元素。通过指针来建立各数据元素之间的线性关系。
特点:
1. 表中元素散列的分布在存储空间中。
2. Head称为第一个结点。
单链表的优点:
1. 可以动态地分配和释放存储空间。
2. 可以避免顺序表的扩容和缩容操作。
3. 可以方便地实现插入和删除操作。
单链表的缺点:
1. 存储密度低。
2. 随机访问的时间复杂度是O(n)。
3. 需要更多的存储空间来存储指针。
线性表是最常用、最简单的一种数据结构。在这种结构中,每个元素均有唯一的直接前驱和直接后继。线性表的顺序表示和链式表示是两种常见的存储方式。顺序表的优点是存储密度高,随机访问的时间复杂度是O(1),但插入和删除操作的时间复杂度是O(n)。单链表的优点是可以动态地分配和释放存储空间,方便地实现插入和删除操作,但存储密度低,随机访问的时间复杂度是O(n)。