////删除某一特定节点
public static Node deleteOneNode(Node head, Node delNode) {
if (head == null || delNode == null)
return head;
if (delNode.next == null) {
// 尾节点
Node temp = head;
while (temp.next != null) {
if (temp.next == delNode)
temp.next = delNode.next;
temp = temp.next;
}
} else {
// 非尾节点
Node p = delNode.next;
delNode.value = p.value;
delNode.next = p.next;
}
return head;
}
//删除倒数第n个节点
public static Node removeNthLastNode(Node head, int n) {
if (head == null || n < 0)
return head;
if(n > getListLength(head))
return null;
Node temp = head;
Node target = head;
while (n > 0) {
temp = temp.next;// 定位倒数第n个节点
n--;
}
// System.out.print("temp.value: " + temp.value + " ");
// 删除第一个节点
if (temp == null)
return head.next;
while (temp.next != null) {
target = target.next;// 定位倒数第n+1个节点
temp = temp.next;
}
temp = null;
// System.out.print("target.value: " + target.value + " ");
if (target.next != null)
target.next = target.next.next;
return head;
}
//去除有序链表的重复元素 对于重复元素只保留一个。
public static Node removeDuplicateList(Node head) {
if (head == null || head.next == null)
return head;
Node pre = head;
while (head != null && head.next != null) {
if (head.value == head.next.value) {
head.next = head.next.next;
} else {
head = head.next;
}
}
return pre;
}
//去除有序链表的重复元素 对于重复元素全部删掉 思路一。
public static Node removeDuplicateListAll(Node head) {
if (head == null || head.next == null)
return head;
Node pre = new Node(0);
pre.next = head;
Node fir = pre;// fir保存的是当前节点的前一个节点
Node sec = head;
while (sec != null) {
int value = sec.value;
int count_repeat = 0;
while (sec != null && value == sec.value) {
sec = sec.next;
count_repeat++;// 统计每个节点重复次数
}
if (count_repeat > 1) {// 若出现次数大于1,说明该节点对应的值需要删掉
fir.next = sec;
} else {
fir = fir.next;
}
if (fir != null) {
sec = fir.next;
}
}
return pre.next;
}
//去除有序链表的重复元素 对于重复元素全部删掉。思路二 递归
public static Node deleteDuplication(Node pHead) {
if (pHead == null)
return null;
if (pHead != null && pHead.next == null)
return pHead;
Node current;
if (pHead.next.value == pHead.value) {
current = pHead.next.next;
while (current != null && current.value == pHead.value)
current = current.next;
return deleteDuplication(current);
} else {
current = pHead.next;
pHead.next = deleteDuplication(current);
return pHead;
}
}
Ddddddd_158
- 粉丝: 3164
- 资源: 729
最新资源
- 基于VS2017嵌套Qt插件开发的一款桌面应用程序,程序整体架构采用插件框架,各摸块通过插件管理器与主系统进行通讯,主系统主要功能包含xmpp、Mqtt即时通讯
- 基于乐鑫idf框架,研究出超稳定、掉线重连、解决内存泄露问题的Mqtt框架详细文档+全部资料.zip
- 基于ZigBee+ESP32+MQTT+EMQX+TomCat+Servlet接口+MySQL+安卓app的物联网课设详细文档+全部资料.zip
- 基于WPF的桌面应用,实现了MQTT通信,三次样条插值,用来控制机器人详细文档+全部资料.zip
- 基于树莓派、esp8266硬件模块 通过Python、Django、lua、mqtt消息队列协议、构建web远程控制平台:可控制小车移动、可视频实时查看详细文档
- 基于事件机制的多模块框架,支持动态库,grpc,websocket,mqtt等多种与后端通信组合方式. 模块动态替换,部分加载或者升级.详细文档+全部资料.zip
- 基于正点原子STM32F4开发板和阿里云物联网平台的MQTT项目详细文档+全部资料.zip
- 基于支持泛化协议接入的边缘网关框架, 以插件化的形式融合了 Modbus、Bacnet、HTTP、MQTT 等主流协议,同时也支持基于TCP的各类私有化协议对接详细文档+全部资料.zip
- 实训项目,计算机二级java刷题系统
- pajek 103369.rar:出色的大型网络分析软件,擅长处理复杂网络结构数据
- GooSeeker 125979:功能丰富的网络数据采集与分析工具
- 使用Matlab创建一个简单的类.pdf
- CiteSpace - 6.2.6.msi:知名的科学知识图谱绘制软件
- 关于web项目应用开发的心得和开发技巧以及关于如何配置开发环境、如何进行数据缓存管理、postman测试接口的使用教程、前后端
- 国开-网络安全技术-实验四 恶意代码攻防实验.doc
- 国开-网络安全技术-实验二 Wireshark安装和使用.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈