2015计算机考研冲刺
主讲:杨航空
更多信息:
@统考计算机_杨航空
@考研专业课微博
第一部分 数据结构
第一章 线性表
线性表的定义及基本操作
线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列。数据
元素之间是一种线性关系。
a) 存在唯一的一个被称为“第一个”的数据元素;
b) 存在唯一的一个被称为“最后一个”的数据元素;
c) 除第一个之外,集合中的每个数据元素均只有一个前驱;
d) 除最后一个之外,集合中的每个数据元素均只有一个后继。
第一章 线性表
顺序表上基本运算的实现
定义:在内存中开辟一片连续的存储空间,将线性表中数据元素按照数据元素之
间的逻辑顺序依次存放其中,用这种存储形式存储的线性表称为顺序表。
特点:逻辑关系相邻的两个元素在物理位臵上也相邻。
位臵确定:LOC(ai)=LOC(a1)+(i-1) ×t( 其中1≤i≤n)
插入数据元素:在表的第i(取值范围:1≤i≤n+1) 个位臵上插入一个值为item 的新元
素,时间复杂度为O(n) 。
删除数据元素:将表的第i(取值范围:1≤i≤n+1) 个位臵上的元素删除,时间复杂度
为O(n) 。
优点:可以随机存取表中任一元素;
缺点:在插入,删除某一元素时,需要移动大量元素。
第一章 线性表
顺序表上基本运算的实现
定义:在内存中开辟一片连续的存储空间,将线性表中数据
元素按照数据元素之间的逻辑顺序依次存放其中,用这种存储形
式存储的线性表称为顺序表。
特点:逻辑关系相邻的两个元素在物理位臵上也相邻。
位臵确定:LOC(ai)=LOC(a1)+(i-1) ×t( 其中1≤i≤n)
优点:可以随机存取表中任一元素;
缺点:在插入,删除某一元素时,需要移动大量元素。
第一章 线性表
顺序表上基本运算的实现
插入数据元素:在表的第i(取值范围:1≤i≤n+1)个位
臵上插入一个值为item 的新元素,时间复杂度为O(n) 。
等概率情况下,平均移动数据元素的次数:n/2
for(j=(*L).len-1;j>=i-1;j--)
(*L).data[j+1]=(*L).data[j]; //插入位臵之后的元
素顺序后移;
(*L).data[i-1]=item; //插入元素;
(*L).len++; //顺序表长增1 ;
第一章 线性表
顺序表上基本运算的实现
删除数据元素:将表的第i(取值范围:1≤i≤n+1)个位
臵上的元素删除,时间复杂度为O(n) 。
等概率情况下,平均移动数据元素的次数:(n-
1)/2
for(int j=i;j<=len-1;j++)
(*L).data[j-1]=(*L).data[j]; // 元素前移;
(*L).len--; //顺序表表长减1 ;
第一章 线性表
链式存储结构
单链表:每个结点除了存储数据元素本身信息的数
据域外,只含有一个指针域用来存放其直接后继数据
元素的存储地址。线性表通过每个结点的指针域拉成
了一个“链”,称之为链表。
特点:逻辑关系相邻的两个元素在物理位臵不一定
相邻。
第一章 线性表
建立带头结点的单链表
头插法:在链表的头部插入结点,建立带头结点的单链表。
从一个空表开始,读取数组a 中的元素,生成新结点,将读取的数据
存放到新结点的数据域中,然后将新结点插入到当前链表的表头上,直
到结束为止。
尾插法:在单链表的尾部插