java数据结构--实现双链表

classNode{//声明节点类publicObjectdate;//保存数据元素publicNodeprev,next;//prev节点前驱,next节点后继。pub... class Node { // 声明节点类
public Object date; // 保存数据元素
public Node prev, next; // prev节点前驱,next节点后继。
public Node(Object date, Node p, Node n) {
this.date = date;
this.next = n;
this.prev = p;

}

public Node() {
this(null, null, null);
}
}

public class MyLinList implements MyList {

Node root = null; //声明根节点
int size; //保存双链表的长度

public MyLinList() { // 构造方法
root = new Node();
size = 0;
}

public void insert(int i, Object e) { // 双链表的插入
Node newNode=new Node(e,null,null);
if(root==null)
root=newNode;
else{
if (i >= 0||i<size) {
Node p = this.root;
for (int j = 0; p.next != null && j <=i; j++)
p = p.next;
Node tem = new Node(e, p, p.next);
p.next = tem; //我不明白为什么这一句和下一句不能调换
p.next.prev = tem;
size++;
}
}
}
public void print() { // 打印双链表
Node p = this.root;
while (p.next != null) {
System.out.print(p.date + " ");
p = p.next;
}
}
展开
 我来答
llei32wang
2013-04-23 · TA获得超过2736个赞
知道大有可为答主
回答量:1478
采纳率:60%
帮助的人:1413万
展开全部
调换了出了什么问题了吗?调换后应该结果不变的。你的循环有问题的p.next != null第一个节点却是ew Node(e,null,null); 明显下个的节点就是null啊,这样写永远都只有一个节点的。
神机天下
2013-04-23 · TA获得超过175个赞
知道小有建树答主
回答量:279
采纳率:0%
帮助的人:183万
展开全部
其实我觉得你这个代码就有问题..双向链表你都没有弄好......

而且..那个两句本来就是要换过来..没有缓过来是错误的
追问
可不可以帮我修改一下,就实现双链表的插入功能就好了
追答
哦..你的写的就一点问题...把那两句替换一下就好了...为什么要替换 就是如果你先p->next=tem 那么在运行p.next.prev的时候  p.next 就是tem  tem.prev还是p
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式