在带头节点的单链表中,删除所有值为x的节点(Java实现)
2017-10-07 10:13
323 查看
方法一:
方法二:用q从头至尾扫描单链表,p指向q前一节点,若q所指节点值为x,则删除,并让q后移一个节点,否则p,q同步后移一个节点。
方法三:采用尾插法建立单链表,使用r指向尾节点,初始值为头节点,
用p从头扫描单链表,若节点值为x,将该节点删除,否则将该节点插入到r之后。
public void deleteAllx1(int x){ Node p = head.next; Node q = head; while(p != null){ while(p != null && p.e != x){ q = p; p = p.next; } if(p != null){ q.next = p.next; p.next = null; p = null; p = q.next; }else{ q.next = null; } } }
方法二:用q从头至尾扫描单链表,p指向q前一节点,若q所指节点值为x,则删除,并让q后移一个节点,否则p,q同步后移一个节点。
public void deleteAllx2(int x){ Node p = head; Node q = head.next; while(q != null){ if(q.e == x){ p.next = q.next; q = q.next; }else{ p = q; q = q.next; } } }
方法三:采用尾插法建立单链表,使用r指向尾节点,初始值为头节点,
用p从头扫描单链表,若节点值为x,将该节点删除,否则将该节点插入到r之后。
public void deleteAllx3(int x){ Node r = head, p = head.next, q; while(p != null){ if(p.e != x){//将其插入到单链表后面 r.next = p; r = p; p = p.next; }else{//删除节点 q = p; p = p.next; q = null; } } r.next = null; }
相关文章推荐
- 如何在O(1)时间删除链表指定节点(Java实现)
- 递归删除树形结构的所有子节点(java和mysql实现)
- java实现单链表(增加节点,删除节点,根据下标获取节点,获取链表大小,链表逆序)
- 删除链表中重复的节点(Java实现)
- Java实现-删除链表中倒数第n个节点
- 剑指offer编程题Java实现——面试题13在O(1)时间内删除链表节点
- 剑指Offer 面试题18:删除链表节点 Java代码实现
- C语言实现单链表节点的删除(带头结点)
- 单链表的java语言完整实现含添加删除节点
- c实现对给定线性链表head按节点值非递减次序输出所有节点,并把刚输出的节点从链表中删除
- 使用递归删除树形结构的所有子节点(java和mysql实现)
- 数据结构与算法分析笔记与总结(java实现)--链表14:删除链表中所有指定值结点问题
- 在单链表中删除倒数第k个节点(java实现)
- C语言实现单链表节点的删除(带头结点)
- java实现单链表(增加节点,删除节点,根据下标获取节点,获取链表大小,链表逆序)
- 不带头节点的单链表及其基本操作(Java实现)
- java实现创建链表以及插入节点,查找结点,删除节点等操作
- 在O(1)时间删除链表节点(Java实现)
- 带头节点的单链表及其基本操作(Java实现)
- 建立一个带附加头结点的单链表.实现测长/打印/删除结点/插入结点/逆置/查找中间节点/查找倒数第k个节点/判断是否有环