关于链表的一些总结和代码,java实现

来源:互联网 发布:海尔ife矩阵 编辑:程序博客网 时间:2024/05/01 04:00

本人对链表这一部分内容掌握的一直不太好,现在总结如下,代码全部在myeclipse下运行通过

1、链表的创建,插入和删除,查找

class Lnode
{
private int val;
private Lnode next;
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
public Lnode getNext() {
return next;
}
public void setNext(Lnode next) {
this.next = next;
}

}


public class LinkList {

public Lnode head=new Lnode();
public void creatLinkList(int[] arr)
{
Lnode tail=head;
for(int i=0;i<arr.length;i++)
{
Lnode newNode=new Lnode();
newNode.setVal(arr[i]);
newNode.setNext(null);
tail.setNext(newNode);
tail=newNode;
}
}


//打印链表中数据
public void printlink()
{  
Lnode ptr;//实例化一个节点  
                 ptr=head.getNext();//该节点取得头结点的后继节点  
                 while(ptr!=null){  
             System.out.print(ptr.getVal()+"->");  
        ptr=ptr.getNext();  
         }  
         System.out.println();  
     }
//插入数据
 public void insertlink(int pos,int value){//两个参数,一个表示插入的位置,另一个表示插入的值  
 int index=0;
 Lnode ptr;  
 Lnode pnew;//实例化新节点  
          ptr=head.getNext();  
          while(ptr!=null){ 
           index++;
               if(pos==index){  
            pnew=new Lnode();  
                  pnew.setVal(value);  
                        pnew.setNext(ptr.getNext());  
                        ptr.setNext(pnew);
            System.out.println("插入数据"+value+"成功!");  
          break;  
                            }  
                           else{  
                                ptr=ptr.getNext();  
                           }  
                }  
               if(ptr==null)  
                         System.out.println("插入数据失败!");  
         }
    //删除结点
    public void deletelink(int value){       
    Lnode ptr=head.getNext();
    Lnode p=head;
    while(ptr!=null)
    {
    if(ptr.getVal()==value)
    {     
    p.setNext(ptr.getNext());
    System.out.println("删除数据"+value+"成功!"); 
    break;
    }
    else
    {
    p=ptr;
    ptr=ptr.getNext();
    }
    }
    if(ptr==null){
              System.out.println("链表中没有要删除的数据!");  
         }   
    }
    //查找结点
    public void seachlink(int value){  
     
    Lnode ptr;  
                 ptr=head.getNext();  
                while(ptr!=null){//在节点非空的情况下寻找匹配的的值  
                   if(value==ptr.getVal()){//匹配成功是  
                 System.out.println("找到数据:"+ptr.getVal());  
                  break;//退出循环  
                    }  
                   else{//当当前值不是要查找的值时,查找下一个  
                  ptr=ptr.getNext();  
                   }   
                }  
                if(ptr==null)//链表遍历完毕,没有找到时  
                  System.out.println("链表中没有要查找数据");  
            }   
     
    public static void main(String args[])
{  


    int a[]={1,4,5,6,7};
   LinkList list=new LinkList();  
   list.creatLinkList(a);  
   System.out.println(" 链表输出如下:");  
   list.printlink(); 
   list.insertlink(2,100);
   list.printlink();
   list.deletelink(100);
   list.printlink();
   list.seachlink(7);
   list.seachlink(100);
}
}

0 0
原创粉丝点击