Java 链表(LinkNode)的简单操作:初始化,遍历,插入,删除等
Posted ITCROWDPLUS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 链表(LinkNode)的简单操作:初始化,遍历,插入,删除等相关的知识,希望对你有一定的参考价值。
由于java中没有结构体,所以用一个类来定义链表,代码如下
主要包括一个data,还有一个指向后面一个节点的next
重写了toString函数,返回你想要的数据
定义链表的类:
package LinkNode; public class LinkNode { public String data; public LinkNode next; public String getData(){ return data; } public void setData(String data){ this.data=data; } public LinkNode getNext(){ return next; } public void setNext(LinkNode next){ this.next=next; } public LinkNode(String data,LinkNode next){ super(); this.data=data; this.next=next; } public LinkNode(){ super(); } @Override public String toString(){ return "data:"+data+" next->"+next; } }
1.初始化链表:
public static void initLinkNode(LinkNode L){ L.setData("#"); L.setNext(null); }
2.遍历链表,返回链表的长度
public static int traverse(LinkNode L){ LinkNode p = L; int count = 1; while(p.next!=null){ p = p.next; count++; } return count; }
3.把链表L的data转化为StringBuffer输出,输出结果为字符串
public static StringBuffer outputLinkNode(LinkNode L){ StringBuffer str = new StringBuffer(""); LinkNode p = L; for(@SuppressWarnings("unused") int i=0;;){ str.append(p.data); if(p.next!=null){ p = p.next; } else{ break; } } return str; }
4.在链表L的尾部插入一个节点,值为data
public static void insertLinkNode(LinkNode L,String data){ LinkNode p = L; LinkNode q = new LinkNode(); for(@SuppressWarnings("unused") int i=0;;){ if(p.next==null){ q.setData(data); q.setNext(null); p.setNext(q); System.out.println("Insert "+data+" success."); break; } else{ p = p.next; } } }
5.删除第n个节点(从0开始)
public static void deleteLinkNode(LinkNode L,int n){ int count = 1; LinkNode p = L; for(@SuppressWarnings("unused") int i;;){ if(count == n){ p.setNext(p.next.next); break; } else{ count++; p = p.next; } } }
6.从index=n开始遍历,如果后面出现str,则返回true否则返回false
public static int lastIndex(LinkNode L,String str){ LinkNode p = L; int flag = 0; for(int i=0;i<traverse(L);i++){ if(p.data==str){ //System.out.println(i); flag = i; } p = p.next; } return flag; }
测试程序:
package LinkNode; public class Quarrel extends Method{ public static void main(String[] args){ LinkNode L = new LinkNode(); System.out.println("初始化:"); initLinkNode(L); System.out.println(L.toString()); System.out.println("插入节点:"); insertLinkNode(L,"R"); insertLinkNode(L,"R"); insertLinkNode(L,"L"); insertLinkNode(L,"L"); insertLinkNode(L,"R"); insertLinkNode(L,"L"); System.out.println(L.toString()); int count = traverse(L); System.out.println("节点个数:"+count); StringBuffer str = outputLinkNode(L); System.out.println(str); //最后一个L的位置 int lastindex = lastIndex(L,"L"); System.out.println("最后一个L的位置:"+lastindex); System.out.println("删除一个节点"); deleteLinkNode(L,2); count = traverse(L); System.out.println("节点个数:"+count); str = outputLinkNode(L); System.out.println(str); System.out.println(L.toString()); } }
结果如下:
以上是关于Java 链表(LinkNode)的简单操作:初始化,遍历,插入,删除等的主要内容,如果未能解决你的问题,请参考以下文章
链表结构体定义LinkNode,*LinkList以及typedef