用Python实现单链表的头插,尾插和中插
2020-05-13 本文已影响0人
佳佳爱科技AITech
头插,从链表的头部插入一个节点,依次类推。中插,就是给定任意位置(index),然后插入该节点。尾插就是从链表的尾部依次插入节点Node
算法思路:
1. 首先,python没有链表数据类型,需要自己构造一个Node 类,里面的成员变量包括data数据项和next指针。
2. 然后声明一个SingleLinkedList单链表类,同样初始化该链表,空表操作更方便,所以,初始化对象为空表。
3. 然后定义成员函数headerInsert() 头插,middleInsert()中插,tailInsert()尾插
详情参看代码注释和实现,下方:
(因为测试头插依次insert 1,2,3,所以链表打印出来是3,2,1.)对的
头插举例
尾插需要注意一点,如果一开始是空表的情况,那就跟头插一样,直接插入节点即可;如果不是空表,非None,则需要找到尾部节点的位置,也就是最后一个节点指向None时,跳出while循环,让指针指向新增Node。
(因为测试尾插依次insert 1,2,3,所以链表打印出来是1,2,3.)对的
尾插举例
中插给定位置插入node节点,需要判断指定的位置是否超出linkedlist长度。所以此处有判断。然后就是需要遍历找到插入位置的前一个节点。前一个节点next指针来指向插入的node即可。
(因为测试中插依次insert 1,2,3,位置为-1, 默认头插。所以一开始链表是3,2,1. 此时,在插入一个4,位置0.依旧头部插入4. 那么linkedlist,为4,3,2,1. 最后,中插一个节点5, 位置是1. 那么最后结果是,4,5,3,2,1, 对的。因为,4(index=0),5 (index=1)
中插举例