题目描述:
给定一个没有排序的链表,去掉重复项,并保留原顺序 如: 1->3->1->5->5->7,去掉重复项后变为:1->3->5->7
方法:
顺序删除
递归删除
1.顺序删除
由于这种方法采用双重循环对链表进行遍历,因此,时间复杂度为o(n**2)
在遍历链表的过程中,使用了常数个额外的指针变量来保存当前遍历的结点,前驱结点和被删除的结点,所以空间复杂度为o(1)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @time : 2020/1/15 20:55
# @author : buu
# @software: pycharm
# @blog :https://blog.csdn.net/weixin_44321080
class lnode:
def __init__(self, x):
self.data = x
self.next = none
def removedup(head):
"""
对带头结点的无序单链表删除重复的结点
顺序删除:通过双重循环直接在链表上进行删除操作
即,外层循环用一个指针从第一个结点开始遍历整个链表,内层循环从外层指针指向的下一个结点开始,
遍历其余结点,将与外层循环遍历到的的指针所指的结点的数据域相同的结点删除
:param