手机
当前位置:查字典教程网 >脚本专栏 >linuxshell >给定链表中间节点指针,删除中间节点的方法
给定链表中间节点指针,删除中间节点的方法
摘要:问题如下输入:链表a->b->c->d->e中指向节点c的指针输出:无返回值,但新链表变为a->b->d->e解答:想了好久没想出来,看了提...

问题如下

输入:链表 a->b->c->d->e中指向节点c的指针

输出:无返回值,但新链表变为a->b->d->e

解答:

想了好久没想出来,看了提示才知道解法的。这里用到了一个小技巧。要删除中间节点,但是我们不知道要删除节点的上一个节点p,所以无法通过修改指针的方法(p->next=del->next)来删除节点,但知道要删除节点的后一个节点,那么我们换一个思路,把要删除的节点的数据与该节点的后一个节点的数据交换,然后删除后一个节点,从而达到目的。但是该方法不能删除最后一个节点,原因显而易见。

复制代码 代码如下:

// a tricky solution,can't delete the last one element

int delete_node(NODE* node) {

int data;

NODE *p=node->next;

node->data=p->data;

node->next=p->next;

free(p);

}

【给定链表中间节点指针,删除中间节点的方法】相关文章:

使用bash shell删除目录中的特定文件的3种方法

shell查找符号链接及其指向目标的方法介绍

强制删除rpm包的方法

linux删除大量文件的6种方法

用shell脚本在mysql表中批量插入数据的方法

Shell脚本中引用、调用另一个脚本文件的2种方法

linux命令详解之挂载光驱的方法

Linux中搭建FTP服务器的方法

在Shell命令行处理JSON数据的方法

Shell定时删除指定时间之前的文件

精品推荐
分类导航