删除链表节点(java)
 //deleteNode() O(1)= ((n-1)*O(1) + O(n)/2)
    static void deleteNode(Nodes head,Nodes x){
        if(head == null || x == null)
            return ;
        //不是尾节点
        if(x.next!=null){
            Nodes temp = x.next;
            x.next = temp.next;
            x.data = temp.data;
        }
        //只有一个节点,头结点(尾节点)
        else if(head == x){
            head = null;
        }else {
            //**尾节点:此处是删除尾节点的,不去遍历找待删除节点的前驱了,直接让应用null,让jvm垃圾回收器去回收节点,这样可以不????**
            x = null;
        }
    }
}
0

2个回答

没问题,因为java不是通过引用计数的方式而是从根对象遍历的方式进行垃圾回收的,只要你设置null了,那些节点都成死对象了,不管它们相互之间怎么引用,都会被回收的。

2
u012637437
SavantStart 恩谢谢
大约 4 年之前 回复
u012637437
SavantStart 恩谢谢
大约 4 年之前 回复

如果你是通过new分配的空间,就记得delete一下,然后置为null,c++没有垃圾回收

1
u012637437
SavantStart java里面没有delete啊
大约 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
剑指Offer面试题13(java版):在O(1)时间删除链表节点
题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。 在单向链表中删除一个节点,最常规的方法无疑是从链表的头结点开始,顺序遍历查找要删除的节点,并在链表中删除该节点。 比如图a所表示的链表中,我们要删除节点i,可以从链表的头节点a开始顺序遍历,发现节点h的m_PNext指向要删除的节点i,于是我们可疑把节点h的m_PNext指向i的下一个节点即为j。指针调整之后,我
剑指offer--面试题13:在O(1)时间删除链表结点--Java实现
题目描述: 在给定的单向列表的头指针和一个结点指针,定义在一个函数在O(1)时间删除该结点。解题思路: 一般单向列表删除结点,就是从头遍历,找到这个结点之前的结点,指向这个结点之后的结点,就算是删除了这个结点。 这种方法的时间复杂度为O(n) 题目要求在O(1)时间内完成,所以应该避免遍历。 我们遍历的目的是为了找到这个结点前面的那个结点,所以我们可以采用下面的办法。 将待删除结点的下一
LintCode-在O(1)时间复杂度删除链表节点
给定一个单链表中的表头和一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。并在删除该节点后,返回表头。您在真实的面试中是否遇到过这个题? Yes 样例 给定 1->2->3->4,和节点 3,返回 1->2->4。标签 Expand 相关题目 Expand /* * Solution:由于我们知道当前的要删除节点的指针,那么就可以不用从头扫描整个链
O(1)时间删除链表结点java
题目: 给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。 思路:把下一结点的内容复制到需要删除的结点,删除下一结点,相当于删除当前结点。   当我们想删除一个结点时,并不一定要删除这个结点本身。可以先把下一个结点的内容复制出来覆盖被删除结点的内容,然后把下一个结点删除。 假定待删除结点在链表中。 /* * O(1)时间删除单链表某一结点 */ public
在O(1)时间删除链表节点(Java实现)
该题为剑指offer面试题13 package cn.itcast.day422; /** * @author Jacob 前提:假设要删除的节点存在于链表中 */ public class Demo1 { public void deleteNode(Node head, Node toBeDeleted) { // 1.如果链表为空,或者要删除的节点为空,返回 if (hea
数据结构 链表节点的删除
数据结构 链表节点的删除 通过三种方法对链表节点进行删除。
【面试题】在O(1)时间复杂度删除链表节点
题目描述给定一个单链表中的表头和一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。并在删除该节点后,返回表头。样例 给定 1->2->3->4,和节点 3,返回 1->2->4。(372) Delete Node in the Middle of Singly Linked List http://www.lintcode.com/zh-cn/problem/dele
关于删除链表结点的小结(Java)
链表删除首结点很简单,只需要让first = first.next即可。主要讨论删除中间链表。 private Node first; private class Node{ private Node next; private Item item; } //先写一个链表结点的嵌套类 public Item pop() { Item it
Java单链表接本操作(三)--删除当前节点
单链表中要删除当前节点,如果当前节点不是头节点,则无法使前面的节点直接指向后面的节点,这时候我们可以换一种思路,即:将当前节点的下一节点值附给当前节点,然后删除当前节点的下一节点,这样就等效为删除当前接节点了。/** * @author Gavenyeah * @date Start_Time:2016年4月1日 上午11:00:13 * @date End_Time:2016年4月1日
c语言学生信息管理系统
建立链表节点,做到链表节点的创建、插入、删除、遍历等操作。
面试题13:在O(1)时间 内删除链表节点
题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。链表节点与函数的定义如下: struct ListNode { int value; ListNode* next; }void DeleteNode(ListNode* head,ListNode* pToBeDeleted); 分析在单向链表中删除一个节点,通常的做法是从链表头开始遍历,如果某个节点的
13 在O1的时间删除链表节点-使用一个节点指针
题目描述:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)的时间删除该节点。链表节点与函数的定义如下: struct ListNode { int m_nValue; ListNode *m_pNext; }; void deleteNode(ListNode *pListHead,ListNode *pDelete); 分析: 使用一个节点指针,删除某一个指定节点,在
LintCode解题笔记 - 在O(1)时间复杂度删除链表节点
给定一个单链表中的表头和一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。并在删除该节点后,返回表头。原文链接: http://www.lintcode.com/zh-cn/problem/delete-node-in-the-middle-of-singly-linked-list/思路,传统意义上,删除当前节点是从头结点head遍历,匹配到目标节点后删除,但是时间复杂
[LintCode] 链表节点计数 - JS
描述 计算链表中有多少个节点. 样例 给出 1->3->5, 返回 3. 源码 /** * @param head: the first node of linked list. * @return: An integer */ const countNodes = function (head) { var count = 0; var cur = head
lintCode(372)——在O(1)时间复杂度删除链表节点
题目描述: 给定一个单链表中的表头和一个等待被删除的节点。请在在O(1)时间复杂度删除该链表节点。并在删除该节点后,返回表头。 样例:给定 1->2->3->4,和节点 3,返回 1->2->4。 这是一道广为流传的Google面试题,能有效考察我们的编程基本功,还能考察我们的反应速度,更重要的是,还能考察我们对时间复杂度的理解。 在链表中删除一个结点,最常规的做法是从
在O(1)时间内删除链表指定结点
链表节点结构如下, struct ListNode {     int m_nKey;     ListNode* m_pNext; }; 求出在O(1)时间内删除链表给定结点的算法函数,该函数的声明如下: void DeleteNode(ListNode *pListHead, ListNode *pToBeDeleted); struct ListNo
java实现创建链表以及插入节点,查找结点,删除节点等操作
涉及两个类,一个DATA,一个是CLType 代码如下: class DATA{ String key; String name; int age; } public class CLType { DATA nodedata=new DATA(); CLType nextnode; CLType CLAddEnd(CLType head,DATA
Java<链表引用置为null是否能删掉一个节点>
链表的节点的定义如下:public class ListNode { int val; ListNode next; ListNode(int x) { val = x; } }主函数:package leetcode;/** * @version 2017/7/29.21:17 */ public class Main { public s
链表节点计数-LintCode
计算链表中有多少个节点.样例: 给出 1->3->5, 返回 3.#ifndef C466_H #define C466_H #include<iostream> using namespace std; /* * Count how many nodes in a linked list. * * Example * Given 1->3->5, return 3. */ class List
单向链表在O(1)时间内删除一个节点
单向链表在O(1)时间内删除一个节点
LintCode入门练习——466. 链表节点计数
给出 1->3->5, 返回 3. 以上是LintCode上的样例 int countNodes(ListNode * head) { int n = 0; for(ListNode *p = head;p != NULL;p = p->next) { n++; } return n; } };
java 删除LinkedList链表中的结点(只给出一个结点)
题目:Write a function to delete a node (except the tail) in a singly linked list, given only access to that node. 实现:/** * Definition for singly-linked list. * public class ListNode { * int val;
链表的动态输入、插入 、与删除
1 #include   2 #include   3 #include   4    5 #define len sizeof(struct student)   6    7    8 struct student   9 {  10     int num;  11     float score;  12     struct student *next;  13
删除链表节点
/* 名称:删除链表节点 功能:删除一个链表节点 接收:链表头节点head, 要删除节点的int型数据 返回:int */ int deleteLink(struct node* L, int data){ //delPtr指向要被删除的节点 //prePtr指向要被删除的节点的前一个节点 struct node * delPtr; struct node * prePtr; //让两个
【LintCode 入门】466. 链表节点计数
LintCode编程练习
LintCode 第466题 链表节点计数
基本思路: 1.创建带头结点的单链表,头结点的数据域value为0 2.遍历链表,过滤掉头结点,不做计数 实现代码: #include #include #include using namespace std; typedef struct LinkListNode { int value; LinkListNode * nextNode; }LinkList
Lintcode:链表节点计数
计算链表中有多少个节点。 样例 给出 1->3->5, 返回 3. python: """ Definition of ListNode class ListNode(object): def __init__(self, val, next=None): self.val = val self.next = next """
数据结构链表演示系统
数据结构演示系统 包括链表节点的插入删除等操作
巧妙利用二级指针删除单链表
代码#include<stdio.h> #include<stdlib.h> /* 单链表 */ typedef struct linkNode { int val; struct linkNode *next; } linkNode, *linkList; linkList createLink(linkList head,int x) { if
设计一个整型链表类list,能够实现链表节点的插入、删除、以及链表数据的输出操作。
#include"iostream" #include"malloc.h" using namespace std; class LNode { private: int data; LNode * next; public: LNode(){}; void InitLNode(LNode *&L){ L=(LNode *)malloc(sizeof(LNode)); L-
466. 链表节点计数 (count-linked-list-nodes)(c++)----lintcode面试题之链表
(一)题目要求:计算链表中有多少个节点.(二)示例:给出 1-&amp;gt;3-&amp;gt;5, 返回 3.(三)题解:/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) { * this-&amp;g...
[LeetCode-203] Remove Linked List Elements(链表节点删除)
Remove all elements from a linked list of integers that have value val.Example Given: 1 –> 2 –> 6 –> 3 –> 4 –> 5 –> 6, val = 6 Return: 1 –> 2 –> 3 –> 4 –> 5【分析】头结点放到最后来删除,先保存要删除节点前面一个节点,然后再删除。 代码如下:
链表节点的增加和删除
struct ListNode { int m_nValue; ListNode* m_pNext; }; //增加节点 /*第一个参数是一个指向指针的指针。当我们往一个空链表中插入一个节点时,新插入的节点 就是链表的头指针。由于此时会改动头指针,因此必须把pHead参数设为指向指针的指针*/ void addToTail(ListNode** pHead, int value)
在O(1)时间删除链表节点
思路:时间复杂度要求为O(1),已知要删除的节点,可以找到该节点的下一个节点,把下一个节点的相关信息复制到要删除的节点上,删除下一个节点,可以达到题目要求。注意:删除尾节点时需要遍历一遍,删除头结点时,需要把头结点移到下一个节点。#include #include #include struct Listnode { int _value; Listnode* _next; }; void 
链表删除框架原理释义
while(p) { //缓存下一个节点位置 tmp=p->next; free(p);//删除掉当前节点 p=tmp;//节点指针后移
Java 单向链表 插入与删除节点
这是一个单向链表,它具有插入与删除节点的功能。Entry类实现了链表的各节点。
剑指offer系列-T13在O(1)时间删除链表节点
本人对java语言更熟悉,所以剑指offer代码都是通过Java实现,且涉及的核心代码全部通过牛客网的测试用例检查,感谢牛客网为我检验程序提供了极大帮助!main函数是为了在自己运行程序时,运行结果更直观化。 /** * @author xhl * 题目:在O(1)时间删除链表节点 * 题目描述:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。 * 方法思路:链
剑指offer面试题13-在O(1)时间删除链表的节点
题目: 给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。 要想在O(1)时间搞定,绝对不能用遍历。 这里采用将后面的一个节点复制到当前节点的方法。 不过有特殊情况要考虑: 1.如果要删除的节点没有下一个节点: 则要找到上一个节点,并且将next设置为空,这个时候只能用遍历 2.如果当前链表就一个节点 由于java中没有指向指针的指针,所以用
链表节点计数
int Solution(node *p) { int i=0; while(p!=NULL) { i++; p=p->next; } return i; }
Lintcode 372.在O(1)时间复杂度里删除节点
1.问题描述:给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在O(1)时间复杂度删除该链表节点。 2.解题思路:已经给定了一个要删除的节点node,就用node的下一个节点来覆盖掉要删除的node。然后释放掉node以前的下一个节点的空间。 3.通过的代码: /**  * Definition of ListNode  * class ListNode {  * publi
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java课程设计删除 乌班图删除python3.6