首页 > 编程语言 > 详细

Java 链表(LinkNode)的简单操作:初始化,遍历,插入,删除等

时间:2018-08-08 23:38:42      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:代码   初始化   结构体   class   如果   traverse   linknode   eth   com   

由于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)的简单操作:初始化,遍历,插入,删除等

标签:代码   初始化   结构体   class   如果   traverse   linknode   eth   com   

原文:https://www.cnblogs.com/fanghuiplus/p/9446376.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号