基础数据结构第04天:单向链表(概念篇)
目录
单向链表的概念
单向链表的元素插入
单向链表的元素删除
单向链表的查找
单向链表的元素索引
单向链表的元素修改
单向链表的概念
链表是由一个个结点组成,每个结点通过链接关系连接起来
例如:A->B的链接,B是A的后继结点,A是B的前驱结点
链表分为:单项链表、双向链表、循环链表等,这里只介绍单项链表
单向链表的元素插入
给定一个索引i和一个元素data,生成一个值为data的结点,并插入到第i个位置上
第一步,判断插入位置是否合法,若不合法则抛出异常
第二步,对给定的元素,生成一个链表结点
第三步,如果插入位置是0,则直接把生成的结点的后继结点设置为当前链表的头节点,并且把生成的结点设置为新的链表头
第四步,如果插入位置不是0,则遍历到插入位置的前一个位置,把生成的结点插入进来
第五步,更新链表的大小
单向链表的元素删除
给定一个索引i,从链表头开始数到第i个结点删除
第一步,判断删除位置是否合法,若不合法则抛出异常
第二步,如果删除位置为首个结点,直接把链表头更新为它的后继结点
第三步,如果删除位置非首个结点,则遍历到要删除位置的前一个结点,并且把前一个结点的后继结点设置为它后继的后继
第四步,更新链表的大小
单向链表的查找
遍历链表,查找元素是否存在,如果存在则返回该结点,否则返回NULL,时间复杂度为O(n)
第一步,遍历链表,比较两个元素,若相等则返回当前节点
第二步,若没找到则返回NULL
单向链表的元素索引
给定一个索引值i,遍历链表,找到第i个索引并返回元素值,时间复杂度O(n)
第一步,判断给定索引是否合法,若不合法则抛出异常
第二步,通过索引访问元素
单向链表的元素修改
将链表中指定索引的元素更新为新的值
第一步,通过索引访问对应结点,修改元素值