9.4练习
链表算法
链表基本知识
1.线性表的链式存储结构是用一组任意的存储单元来存放线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。
2.那么,对于某一元素,如何找到它的下一个元素的存放位置呢?因此,对每个数据元素ai,除了存储其本身的信息之外,还需存储一个指示其直接后继存放位置的指针。这两部分信息组成数据元素ai的存储映像,称为结点(node)。它包括两个域:其中存储数据元素信息的域称为数据域;存储直接后继存放位置的域称为指针域。
3.如果每个结点只设置一个指向其后继结点的指针成员,这样的链表称为线性单向链接表,简称单链表。
4.如果每个结点中设置两个指针成员,分别用以指向其前驱结点和后继结点,这样的链表称之为线性双向链接表,简称双链表。
5.链表和数组不同和两者优缺点:(重点)
链表: 数组:
不是连续空间 连续空间
优点:增加和删除方便; 优点:易于访问和连接;
缺点:查找很难 缺点:不利于增加和删除;
解题思路:获取第n个节点的值; 头部插入节点 ;尾部插入节点;第n个节点前插入节点;删除第n个节点
9.5练习
递归方法的基本思路
1.递归:在定义一个过程或函数时出现调用本过程或本函数的成分,称之为递归。
2.若调用自身,称之为直接递归。
3.若过程或函数p调用过程或函数q,而q又调用p,称之为间接递归。
4.如果一个递归过程或递归函数中递归调用语句是最后一条执行语句,则称这种递归调用为尾递归。
5.递归模型是递归算法的抽象,它反映一个递归问题的递归结构。一般情况下,一个递归模型由递归出口和递归体两部分组成。
6.递归出口确定递归到何时结束,即指出明确的递归结束条件。递归体确定递归求解时的递推关系。