1、本章学习到了顺序表和链表的表示以及相关的操作以及各类操作的平均时间复杂度(一般默认为最坏情况的时间复杂度)、以及顺序表和链表的空间性能和时间性能的比较、以及有序表的合并
(一)顺序表(1)特点:逻辑上相邻,物理上也相邻、随机存取的存储结构、存取密度大(为1)
(2)各操作的时间复杂度:取值算法:O(1) 、 查找算法:O(n)、插入算法:O(n)、删除算法:O(n)
以上操作的空间复杂度S(n)=O(1) [没有占用辅助空间]
(二)链表(1)特点:逻辑上相邻,物理上不一定相邻、顺序存取、存取密度小于1
(2)单链表可由头指针唯一确定
(3)首元结点:是指链表中存储第一个数据元素的结点
头结点:在首元结点之前的一个结点,指针域指向首元结点
头指针:指向链表中的第一个结点(有无头结点)
(4)各操作的时间复杂度:取值算法:O(n)、查找算法:O(n)、插入算法:O(n)、删除算法:O(n)
(5)单链表的创建:(1)前插法 (2)后插法
(6)带有头结点的空表:L->next=NULL;(头结点的指针域为空)
不带头结点的空表:L==NULL(L为单链表的头指针)
(三)链表:a)线性表长度变化较大
b)频繁进行插入删除操作
顺序表:a)线性表长度变化不大
b)线性表的主要操作是和元素位置紧密相关的这类取值操作,很少做插入删除操作
(四)指针在初始化时需要动态申请空间 int*a=new int [大小] 等同于int*a; a = new int [大小]; ,静态数组初始化时不需要动态申请空间
2、多看书多学习(课本上有很多小的知识点很有用)、遇到不懂的知识点就问同学查百度
当数组长度过大时一般将数组定义为全局变量,因为局部变量存储在栈区,全局变量存储在堆区,可以避免数组长度过大导致的栈溢出
3、参考了上学期学习的《c++程序设计教程》P188-200
4、代码的格式不熟悉,看完题目没有头绪,想不出算法
5、接下来的目标是能够把代码打好,多学习相关的代码知识