java - 写一个“在双链表里在指定结点前插入结点”的函数,传参传什么?
本文介绍了java - 写一个“在双链表里在指定结点前插入结点”的函数,传参传什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
public class DoubleLinked<Item>{
private Node<Item> first;
private Node<Item> last;
private int n;
private static class Node<Item> {
private Node<Item> previous;
private Item item;
private Node<Item> next;
}
//忽略基本的代码...
//插入某个结点前结点
//问题就在这里
public void insertBefore(? ?){
//插入操作等等....
}
}
在insertBefore函数参数类型我不知道该如何定义。我认为可以传3种参数(如果有更好的思路请告诉我):
Item。也就是节点的内容,那么就是去遍历一个链表然后找到有这个内容的节点。但是如果有相同的内容就有点蛋疼了。
Int。结点的所在坐标,然后next下去找到这个节点去插入。
Node。似乎难以实现...没什么思路。
刚开始学数据结构方面的知识,如果问的问题过于傻x还请各位大大包涵。
__
更新,并且邀请诸位,原因:
在java的板块中经常能看到@manong的身影,大多数答案也令人信服。凭这点,我是愿意相信他的。
@神不为者人为之 说的有理有据。引起了我的思考。
但是我认为我是个菜鸟,所以不敢妄下结论。邀请各位来希望能给个正确姿势,因为现在唯一的两个答案完全是两个分歧..
解决方案
你到底是要插入还是删除?
如果是删除,就是Node的引用就可以了啊,下面是伪代码
public void deleteAfter(Node node) {
Node next = node.next; // 这个是要删的节点
node.next = next.next;
next.next.prev = node;
}
如果是插入,也很简单
public void insertBefore(Node node, Node newNode) {
node.prev.next = newNode;
node.prev = newNode;
}
这篇关于java - 写一个“在双链表里在指定结点前插入结点”的函数,传参传什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文