Java数据结构-线性表之单链表应用-重复节点的删除
2015-07-19 23:22
393 查看
整个问题的解题思路如下:
建立指针p,用于遍历链表;
建立指针q,q遍历p后面的结点,并与p数值比较;
如果q与p值相等,则删除q。如果q有后继节点,则将q前驱节点和q后继节点链接起来;否则直接开始下一轮遍历。
Java代码实现如下,建议将这段代码copy到之前的Java版本的LinkedList(FOLinkedList)中。
算法的时间性能为O(n的2次方)
建立指针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次方)
相关文章推荐
- Java数据结构-线性表之单链表应用-单链表的逆置
- Java数据结构-线性表之静态链表
- Java数据结构-线性表之循环链表
- Java数据结构-线性表之双向链表
- 数据结构之还没有解决的任务
- 数据结构之线索二叉树
- 数据结构之二叉树(遍历、建立、深度)
- 数据结构之二叉树(概念)
- 数据结构之循环队列
- 数据结构之链队列
- 数据结构之栈
- 数据结构之线性结构的离散存储(循环列表和双向链表)
- 数据结构之线性结构的离散存储(单链表)
- 数据结构之线性结构的顺序存储(数组)
- 数据结构概述
- 数据结构—二叉树的四种遍历
- 数据结构之图(存储结构、遍历)
- 数据结构之图(存储结构、遍历)
- 数据结构和设计模式01(数据结构的基础)
- 求最大子序列的四种算法,数据结构与算法分析(C语言版)第二章