二、线性表(掌握纲要)
1.线性关系、线性表的定义,线性表的基本操作;
2.线性表的顺序存储结构与链式存储结构(包括单(向)链表、循环链表和双向链表)的构造原理;
3.在以上两种存储结构的基础上对线性表实施的基本操作,包括顺序表的插入与删除、链表的建立、插入与删除、查找等操作对应的算法设计(含递归算法的设计)。
具体内容:
1.线性关系、线性表的定义,线性表的基本操作;
2.线性表的顺序存储结构与链式存储结构(包括单(向)链表、循环链表和双向链表)的构造原理;
下面方法为加入一个p结点后,判断链表从【头结点】到【p指针指向的结点】之间有没有与p->data相等的值,
有则删除p结点,没有则p指向下一个结点
上面的方法有点笨,就是每判断一个结点都要从头全部判断一遍,有n个相同的值的话,就得重复遍历n-1次来减去相同的数据的结点。
较快的做法是,
定义指针p为从头结点开始,q初始化为q的下一个指针,r定义为q的前一个指针,遍历q,删除与p相同数据的结点。
这样一个循环就可以将所有与p相同的结点都删除了。
不过这个做法也是O(n^2).
但理论上比前一个做法优秀一点。