精华内容
下载资源
问答
  • 这里主要记录单向列表添加和删除一个指定位置节点的书写方法。  首先先创建链表节点数据的基本类型:    #ifndef NODE_H #define NODE_H #include "Person.h" class Node { public: Person data; //...

         


           这里主要记录单向列表添加和删除一个指定位置节点的书写方法。


           首先先创建链表节点数据的基本类型:

      

         

    #ifndef NODE_H
    #define NODE_H
    #include "Person.h"
    
    
    class Node
    {
    public:
    	Person data;     //数据域
    	Node *next;   //指向下一个节点
    	void printNode();
    };
    
    #endif // !NODE_H
    

           接下来创建节点的节本类型:

    class List
    {
    public:
    	List();
    	~List();
    	void clearList();
    	bool listEmpty();
    	int listLength();
    	bool getElement(int i, Node *pNode);
    	int locateElement(Node *pNode);
    	bool priorElement(Node *pCurrentNode, Node *pPreNode);
    	bool nextElement(Node *pCurrentNode, Node *pNextNode);
    	void listTraverse();
    	bool listInsert(int i, Node *pNode);
    	bool listDelete(int i, Node *pNode);
    	bool listInsertHead(Node *pNode);
    	bool listInsertTail(Node *pNode);
    private:
    	Node *m_pList;
    	int m_iSize;
    	int m_iLength;
     
    };
    #endif

            往指定节点添加函数如下所示:


    bool List::listInsert(int i, Node *pNode)
    {
    	if (i<0 || i>m_iLength)
    	{
    		return false;
    	}
    	Node *currentNode = m_pList;
    	for (int k = 0; k < i; k++)
    	{
    		currentNode = currentNode->next;
    	}
    	
    	Node *newNode = new Node;
    	if (newNode == NULL)
    	{
    		return false;
    	}
    	newNode->data = pNode->data;
    	newNode->next = currentNode->next;     //原本currentNode的下一节点变为了newNode的下一个节点
    	currentNode->next = newNode;           //newNode成为了currentNode的下一节点
    	m_iLength++;
    
    	return true;
    
    }

           删除指定节点函数:

    bool List::listDelete(int i, Node *pNode)
    {
    	if (i < 0 || i >= m_iLength)
    	{
    		return false;
    	}
    	Node *currentNode = m_pList;
    	Node *currentNodeBefore = NULL;
    
    	for (int k = 0; k <= i; k++)
    	{
    		currentNodeBefore = currentNode;
    		currentNode = currentNode->next;
    	}
    	currentNodeBefore->next = currentNode->next;
    	pNode->data = currentNode->data;      //取出currentNode的值
    	delete currentNode;
    	currentNode = NULL;
    	m_iLength--;
    
    	return true;
    
    }


    展开全文
  • 删除单向链表的最后一个节点

    千次阅读 2020-03-07 20:05:42
    分为三个步骤: 1、找到倒数第二个内存,把它的指针域置为NULL; 2、将最后一个节点所占用的内存(堆内存)释放掉; 第一步:

     

     

    具体操作:

    1、封装一个生成链表的函数(createlist),一个遍历并打印链表的函数(printlist),一个删除链表最后节点的函数(deletelist需要判断是否只剩1个节点);

    2、生成一个包含5个节点的单向链表;

    3、调用5次删除节点的函数,完成删除,其中第五次由于只剩一个节点无法删除。

    关键点:

    1)找到倒数第二个节点{pTemp->next->next=NULL时,确定了最后一个节点,使得pHead=pTemp,而pTemp->nex(在移位前)则是倒数第二的节点},

    2)将最后一个节点所占用的内存(堆内存)释放掉;pTemp = pTemp->next操作使得节点发生移位,之后再free(pTemp->next)

    3)将新的最后一个节点(之前的倒数第二个节点)的指针域置为NULL(移位后的pTemp->next=NULL);

    /*
    *copyright(c) 2018,HH
    *All rights reserved.
    *作 者:HH
    *完成日期:2020年3月7日
    *版本号:v1.0
    *
    *问题描述:生成一条包含5个节点的单向链表,然后从尾部开始依次删除,直至剩下头部节点
    *输入描述:学生C
    *程序输出:学生A、学生C、学生C;。
    *备注:
    思考如何
    *1)获取链表中指定元素的位置;
    *2)获取单链表中结点个数;
    *3)链表插入or删除
    *4)两个链表的合并
    *5)链表倒置
    *6)遍历链表
    */
    
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    
    struct  Node
    {
    	char name[32];
    	Node  *next;
    };
    
    
    //创建一条链表,拥有N个节点,尾插法
    Node  *   CreateList(int  N)
    {
    	Node  *pHead = NULL;//始终指向第一个节点的首地址,没有节点存在时为NULL
    	Node  *pTail = NULL;//始终指向最后一个节点的首地址,没有节点存在时为NULL
    
    	for (size_t i = 0; i < N; i++)
    	{
    		Node  * pNode = (Node *)malloc(sizeof(Node));//节点生成公式!!!!!pNode为指向所生成的节点的指针
    		sprintf(pNode->name, "学生%d", i+1);//把格式化的数据写入某个字符串缓冲区
    		pNode->next = NULL;
    
    		if (pHead == NULL)//如果是第一个节点
    		{
    			pHead = pNode;
    		}
    		else
    		{
    			pTail->next = pNode;
    		}
    		pTail = pNode;
    	}
    
    	return  pHead;//返回链表头结点的指针
    }
    
    
    //打印一条链表
    void  PrintList(Node  *pHead)
    {
    	while (pHead!=NULL)
    	{
    		printf("%s    ", pHead->name);
    		pHead = pHead->next;//pHead的改变不影响实参,因为是参数的拷贝
    	}
    	printf("\n");
    }
    
    
    //删除链表的尾部节点
    Node *   DeleteTail(Node *pHead)
    {
    	//需要判断这个链表是否只有一个节点,不存在倒数第二个节点
    	if (pHead->next == NULL)
    	{
    		printf("当前链表只有一个节点\n");
    		free(pHead);//删完后,这条链表一个节点也没有了
    		return  NULL;
    	}
    
    
    	Node *pTemp = pHead;
    	//需要获取尾部节点的前一个节点指针(因为我们要把前一个节点的next设置为NULL)
    	
    	while (pTemp->next->next!=NULL) //获取倒数第二个节点的指针
    	{
            //当前节点下一个节点的指针域不是NULL时,移位到下一个节点!!!
    		pTemp = pTemp->next;//pTemp的改变不影响实参
    	}
    
    	printf("当前节点是:%s  \n", pTemp->name);
    
    	//删除最后一个节点的内存!!!
    	free(pTemp->next);
    	//将倒数第二个的next置为NULL,让倒数第二个变成尾节点!!!
    	pTemp->next = NULL;
    
    
    	return pHead;
    }
    
    
    int main()
    {
    	Node  *pHead= CreateList(5);//生成链表
    	PrintList(pHead);//打印链表
    
    	pHead = DeleteTail(pHead);//删除最后一个节点
    	PrintList(pHead);//打印链表
    
    	pHead = DeleteTail(pHead);//删除最后一个节点
    	PrintList(pHead);//打印链表
    
    	pHead = DeleteTail(pHead);//删除最后一个节点
    	PrintList(pHead);//打印链表
    
    	pHead = DeleteTail(pHead);//删除最后一个节点
    	PrintList(pHead);//打印链表
    
    	//接受新的pHead
    	pHead =DeleteTail(pHead);//删除最后一个节点
    	PrintList(pHead);//打印链表
    
        return 0;
    }
    
    

     

    展开全文
  • 在一些js框架,如Prototype中,可以用element.remove()来删除一个节点,核心JS中并 没有这样的方法,IE中有这样一个方法:removeNode(),尝试运行下面的代码 <div><input onclick="removeNode(this)" type="text...
  • js删除一个dom节点操作

    千次阅读 2020-08-19 16:23:11
    <body> <div id="main"> <div id="box">111</div> <div class="box2">222</div> </div> <script type="text/javascript"> var box = document.getElementById(... } else{ alert("没有这div"); } </script> </body>
    
    <body>
    <div id="main">
        <div id="box">111</div>
        <div class="box2">222</div>
    </div>
    <script type="text/javascript">
    var box = document.getElementById("box");
    var main = document.getElementById("main");
    var newMask = document.createElement("div");
    newMask.id ="newMask";
    main.appendChild(newMask); 
    if(box){
        box.parentNode.removeChild(box);
    }
    else{
        alert("没有这个div");
    }
    </script>
    </body>
    
    展开全文
  • 力扣上看到的一个题,大概是写一个函数,这个函数的传参值,是一个单链表的某一个节点,需要在链表中删除这个节点。不影响其他节点。 首先按照常理,应该是找到前一个节点,并将前一个节点指向下一个指针的节点进行...

    力扣上看到的一个题,大概是写一个函数,这个函数的传参值,是一个单链表的某一个节点,需要在链表中删除这个节点。不影响其他节点。
    首先按照常理,应该是找到前一个节点,并将前一个节点指向下一个指针的节点进行更改。
    但是有问题,首先,这是一个单链表,传参值是要删除的节点,也就是说找不到它的前一个节点。
    思路:
    首先,把要删除的节点值改为下一个节点值,这样删除下一个节点,就可以解决这个问题

    func deleteNode(node *ListNode) {
        node.Val=node.Next.Val//将此节点的值更改为下一个节点
        node.Next = node.Next.Next//将此节点指向下一个节点的指针进行更改,指向下一个节点的下一个节点
    }
    

    在这里插入图片描述
    最后将最后一个元素删除。

    展开全文
  • 二叉树中删除一个节点

    万次阅读 2014-06-15 23:06:34
    二叉树的删除可以算是二叉树最为复杂的操作,删除的时候要考虑到很多种情况: 1.被删除节点是叶子节点 2.被删除节点只有左...在二叉树中想要删除一个节点,首先需要找到这个节点,由于二叉树在插入节点的时候会遵
  • 怎么删除一个没有头指针的单链表的一个节点
  • hadoop加入一个节点删除一个节点刷新集群状态命令1、增加节点1.1、动态添加datanode,不停namenode 1.修改slaves文件,添加需要增加的节点host或者ip,并将其更新到各个节点 2.在datanode中启动执行启动datanode...
  • 编写C函数,实现双向链表删除一个节点P。 //删除操作 Status ListDelete_Dul(DuLinkList &amp;L,int i,ElemType &amp;e) { if(!(p=GetElemP_DuL(L,i))) return Error; e=p-&gt;data; p-&gt;...
  • 一般情况下,我们删除节点时是知道待删除节点的前节点和后节点。...我们现在只知道当前节点,那么就一定知道其后面的多个节点,所以就借用其后节点,重新构建我们熟悉的前节点、待删除节点、后节点的形式。 ...
  • 后附创建链表的两种方法的示意图。 #include<iostream> typedef struct Node{ int value; Node *next; }node,*linklist;...//创建有10个节点的链表 ...//删除第9个节点 const int delete_f...
  • 将这个节点复制成下一个节点的值,然后删除一个节点  node *p; // 当前节点 node *q; q = p -> next; p.data = q.data; // 复制q节点到p p -> next = q -> next; // 删除q free(q);
  • 单向链表在O(1)时间内删除一个节点

    千次阅读 2016-06-05 12:36:23
    单向链表在O(1)时间内删除一个节点
  • LeetCode 1474. 删除链表 M 个节点之后的 N 个节点

    千次阅读 多人点赞 2020-07-02 23:08:19
    删除接下来的 n 个节点. 重复步骤 2 和 3, 直到到达链表结尾. 在删除了指定结点之后, 返回修改过后的链表的头节点. 进阶问题: 你能通过就地修改链表的方式解决这问题吗? 示例 1: 输入: head = [1,2,3,4,5,6,7,8,9...
  • 我们首先看一下删除一个不是根节点节点牵涉到几个节点删除E后 现在需要删掉E 需要 E的父节点 B ,以A为根节点的最大节点(上一篇讲过获取B节点) A,E的左孩子 F,E的右孩子   思路如下...
  • 初始化定义一个单链表,删除指定节点,输出链表 下面是具体的实现: #!usr/bin/env python #encoding:utf-8 ''' __Author__:沂水寒城 功能:给定一个单链表删除指定节点 ''' class Node(object): ''' ...
  • js点击删除最后一个元素节点

    万次阅读 2016-12-22 20:40:02
    当然还需要一个判断,防止多次点击一个人的时候报错,JS本身不太熟练,学习ing... 结构代码大概如下: (this)"> 这里是昵称 这里是未读信息条数 function remo(obj){ var test = obj....
  • //删除单链表中的任意一个节点,可能是传节点删除,也可能是传节点的值删除 typedef struct _Node { int val; struct _Node* next; }Node,*LinkList; //不带头结点的单链表 void Init(LinkList* list) { (*list) ...
  • 哨兵节点删除链表倒数第N个节点

    千次阅读 2020-09-03 20:56:41
    01、哨兵节点 在链表的题目中,十道有九道会用到哨兵节点,所以我们...举个例子,比如我们要删除某链表的第一个元素,常见的删除链表的操作是找到要删元素的前一个元素,假如我们记为 pre。我们通过: pre.Next = pr
  • 双链表删除节点

    千次阅读 2021-02-22 15:22:20
    编写一个程序,从双链表中移除一个节点,函数的原型如下 int dll_remove(struct NODE *rootp, struct NODE *node); 你可以假设节点数据结构在头文件double_linked_list_node.h文件中定义,函数第一个参数是一个...
  • Zookeeper删除一个Znode下的所有节点

    千次阅读 2019-12-09 17:02:32
    Zookeeper, Znode 介绍: ...Java使用CuratorFramework ,删除Znode public class ZookeeperManager { private static CuratorFramework client; static { ...
  • 单链表删除节点

    千次阅读 2020-11-07 11:09:50
    //给定单向链表的头指针和一个删除节点的值,定义一个函数删除节点。 //返回删除后的链表的头节点
  • HDFS删除节点

    千次阅读 2019-11-06 17:28:51
    目标:掌握HDFS在集群中删除掉无效节点的步骤 第步:创建dfs.hosts.exclude配置文件 在namenod的cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop目录下创建dfs.hosts.exclude文件, 并添加需要退役的主机...
  • jquery删除节点

    千次阅读 2018-05-23 22:20:04
    jquery提供了3中删除节点的方法。分别是remove()、detach()、empty()。1、remove()方法1.1、$(selector).remove()的使用 解释:删除匹配到的文档中的元素节点,同时返回删除节点引用。我们可以在后面的业务如果...
  • 我们知道,借助于第三方库,可以很方便地清空一个元素,即删除一个元素的所有子元素,如jQuery中的empty()函数,但是,原生js怎样实现这个功能呢,其实很简单,写一个循环就可以了,如下所示: function ...
  • 题目:在一个单向链表的第N个节点前插入一个节点。 我们平常的想法是从头结点开始遍历,找到第N-1个结点,然后插入结点。但本题并没有给出头结点,所以我们无法通过遍历找到要插入的位置,所以我们需要转变思想,...
  • 完全二叉树输出最后一个节点

    千次阅读 2019-07-18 11:36:27
    1, 输入一个完全二叉树,求出最后一个节点值。 2, 例如: 输入: 输出: 5 3, 算法思想:首先遍历完全二叉树的左分支,求出完全二叉树的高度depth, 然后对于每个子树的根节点,先从根节点的右孩子开始,然后...
  • js 删除多个子节点

    2020-04-24 11:50:17
    比如下面这个节点 <ul> <li>熊大</li> <li>熊二</li> <li>光头强</li> </ul> 想要把里面的li全部删除。 如果使用下面的代码,无法完全删除 var ule=doc...
  • 2.修改slaves文件,并更新到各个节点 3.启动namenode 4.执行hadoop balance命令。(此项为balance集群使用,如果只是添加节点,则此步骤不需要) -- 方式2:动态添加datanode,不停namenode方式 ...
  • 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除节点。 现有一个链表 -- head = [4,5,1,9],它可以表示为: 示例 1: 输入: head = [4,5,1,9], node = 5 输出: [4,1,9] ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 879,939
精华内容 351,975
关键字:

删除一个节点