作者:心痛则痛1314 | 来源:互联网 | 2023-06-23 10:21
乱序前提:就是头头,尾尾,头尾,尾头都不相同事例:ABCDF老节点NACME新节点1.头和头比N移动到A前面,如果不一样那么将新节点头节点插入到老节点头节点前面,新节点头指针向后移
乱序前提: 就是头头,尾尾,头尾,尾头 都不相同
事例:
ABCDF 老节点 NACME 新节点
1.头和头比
N移动到A前面 ,如果不一样那么将新节点头节点插入到老节点头节点前面,新节点头指针向后移动 结果: NABCDF 头节点位置A (没动过) NACME 头节点位置A (从N 移动到 A)
2.头和头继续比较
新老节点头部节点相同,新老节点头部指针同时向后移动 结果: NABCDF 头节点位置B(从A 移动到 B) NACME 头节点位置C(从A 移动到 C)
3.继续比较
新老节点头部不相同 头尾不相同 尾尾 尾头都不相同,遍历老节点找到与新节点相同的C,将C节点移动到老节点头指针的前面,C位置用null代替,新节点头指针向后移动 结果: NACB null DF 头节点位置B(没移动过) NACME 头节点位置C(从C 移动到 M)
注意:下面的比较略过null 因为比对也没结果 遇到null 指针直接跳过
4.继续比较
新老节点头部不相同 头尾不相同 尾尾 尾头都不相同,遍历老节点找不到与新节点相同的M,将M节点插入到老节点头指针的前面,新节点头指针向后移动 结果: NACMB null DF 头节点位置B(没移动过) NACME 头节点位置C(从M 移动到 E)
5.继续比较
新老节点头部不相同 头尾不相同 尾尾 尾头都不相同,遍历老节点找不到与新节点相同的E,将E节点插入到老节点头指针的前面 结果: NACMEB null DF 头节点位置B(没移动过) NACME 头节点位置C(E节点最后了不需要移动)
新节点是最后一项 直接删除老节点头指针及其后面所有