您的位置:首页 > 理论基础 > 数据结构算法

Java数据结构-线性表之单链表应用-重复节点的删除

2015-07-19 23:22 393 查看
整个问题的解题思路如下:

建立指针p,用于遍历链表;

建立指针q,q遍历p后面的结点,并与p数值比较;

如果q与p值相等,则删除q。如果q有后继节点,则将q前驱节点和q后继节点链接起来;否则直接开始下一轮遍历。

Java代码实现如下,建议将这段代码copy到之前的Java版本的LinkedList(FOLinkedList)中。

/**
 * @TODO 重复节点的删除
 * @param foll 需要删除重复节点的单链表
 * @return foll 删除重复节点后的单链表
 */
public static FOLinkedList removeRepeatElement(FOLinkedList foll){
    FOLinkedNode p = foll.header;
    if(foll.header==null){
        return foll;
    }
    while(p.next!=null){
        FOLinkedNode q = p.next;
        while(q.next!=null){
            if(q.next.getE().equals(p.getE())){
                q.addNext(q.next.next);
                foll.size--;
            }else{
                q = q.next;
            }
        }
        p=p.next;
    }
    return foll;
}


算法的时间性能为O(n的2次方)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: