当前位置: 代码迷 >> J2SE >> 新人求解释,单链表固定位置安插一个节点
  详细解决方案

新人求解释,单链表固定位置安插一个节点

热度:61   发布时间:2016-04-23 19:46:45.0
新人求解释,单链表固定位置插入一个节点
class link{  class node {}  //外部类link,内部类node

public void insertNode(int index, String str){ //外部类link的函数insertNode()
     node newnode = new node(str);  //生成新节点
     node tmp ;                                   //成生一个临时节点
     tmp = head;                                 //让临时节点 = 头节点
     for(int i =0 ; i < n-1; i++){ 
         tmp =tmp.next;                        //找到要插入的职位的前一节点
     }
    newnode.next= tmp.next;             //将新节点插入
    tmp.next=newnode;
   System.out.println();
   tmp.print();
}
}
测试:本来单向链打印出来是:A B C D E F, 现在 insertNode(4,“*”);结果为:A B C *  D E F
问题:我确实就是想要这个结果,网上抄来的代码确实可以用,但是不理解为什么能插入 * ?
我认为插入*后,打印原链表还是head(A)->B->C->D->E->F,感觉原链表不该有变化, tmp插入后不应该是C(tmp)-> * ->D(tmp.next)->E->F,原链表的中B 并没有连上tmp啊,为什么输出的结果里有* 呢。我感觉C 还是指向D才对。
菜鸟不太理解单向链,问的问题比较奇怪,但是真的不明白啊。。。。求解释 T.T

------解决思路----------------------
*作为字符串插入到单链表里面了。
    newnode.next= tmp.next;             //将新节点插入
    tmp.next=newnode;


newnode即*, 它的下一个节点指向了C的下一个节点,即D。
tmp即C,它的下一个节点指向newnode,即*。
完成了C-->*-->D
  相关解决方案