OJ-------从单向链表中删除指定节点
来源:互联网 发布:什么是访客网络设置 编辑:程序博客网 时间:2024/06/07 19:57
题目描述
输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。链表结点定义如下:struct ListNode{ int m_nKey; ListNode* m_pNext;};详细描述:本题为考察链表的插入和删除知识。链表的值不能重复构造过程,例如1 -> 23 -> 25 -> 14 -> 57 -> 2最后的链表的顺序为 2 7 3 1 5 4删除 结点 2则结果为 7 3 1 5 4
输入描述:
1 输入链表结点个数2 输入头结点的值3 按照格式插入各个结点4 输入要删除的结点的值
输出描述:
输出删除结点后的序列
输入例子:
523 24 35 21 43
输出例子:
2 1 5 4 ////正确结果应该是 2 4 5 1
算法实现
import java.util.List;import java.util.Scanner;public class Main { private static class ListNode { int key; ListNode next; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in);// Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt")); while (scanner.hasNextLong()) { int num = scanner.nextInt(); int h = scanner.nextInt(); ListNode head = new ListNode(); head.key = h; for (int i = 0; i < num - 1; i++) { int newVal = scanner.nextInt(); int afterVal = scanner.nextInt(); addNode(newVal, afterVal, head); } int del = scanner.nextInt(); head = delete(del, head); System.out.println(getString(head)); } scanner.close(); } private static String getString(ListNode head) { StringBuilder builder = new StringBuilder(); while (head!= null) { builder.append(head.key).append(' '); head = head.next; }// return builder.substring(0, builder.length() - 1); return builder.toString(); } private static void addNode(int newVal, int afterVal, ListNode head) { ListNode n = head; while (n != null) { if (n.key == afterVal) { ListNode node = new ListNode(); node.key = newVal; node.next = n.next; n.next = node; break; } n = n.next; } } private static ListNode delete(int val, ListNode head) { if (head.key == val) { ListNode ret = head.next; head.next = null; return ret; } else { ListNode prev = head; while (prev.next != null) { if (prev.next.key == val) { prev.next = prev.next.next; break; } prev = prev.next; } return head; } }}
0 0
- OJ-------从单向链表中删除指定节点
- 华为OJ:从单向链表中删除指定值的节点
- 华为oj 从单向链表中删除指定值的节点
- 华为OJ从单向链表中删除指定值的节点
- 华为OJ(从单向链表中删除指定值的节点)
- 【华为OJ】【093-从单向链表中删除指定值的节点】
- 华为OJ——从单向链表中删除指定值的节点
- 从单向链表中删除指定值的节点(OJ 不用看这题)
- 华为OJ——从单向链表中删除指定值的节点
- 从单向链表中删除指定值的节点
- 从单向链表中删除指定值的节点
- [编程题]从单向链表中删除指定值的节点
- 24.从单向链表中删除指定值的节点
- 删除单向链表的指定节点
- 从单向链表中删除指定值的节点(格式控制真坑,末尾要打印空格,样例输出有错误)
- 单向链表(二) 删除指定位置的节点
- 删除单向链表中重复的节点
- 华为OJ 向升序单向链表中插入一个节点
- JavaScript中变量和函数的提升学习
- 项目体会 合格的Leader 应该具备什么特质?
- [LPE]Windows Local Privilege Escalation MS15-051
- J. Panoramic Photography----思维题
- JavaScript之arguments
- OJ-------从单向链表中删除指定节点
- 机器学习课程 笔记
- Ubuntu12.10编译MPTCP
- Python 日志组件学习(一)
- React Native 配置环境(iOS and Android)
- RecyclerView实现复杂布局
- 美国大学最新排名较以往变化不大 名校对语言成绩(雅思)要求更高
- scala编程实战 scala编程实战pdf 下载
- Hibernate