单向链表JAVA代码

送分小仙女□ 提交于 2019-12-20 10:52:16
 
 
  1. //单向链表类
  2. publicclassLinkList{
  3.  
  4.     //结点类
  5.     publicclassNode{
  6.         publicObject data;
  7.         publicNode next;
  8.  
  9.         publicNode(Object obj,Node next){
  10.             this.data = obj;
  11.             this.next = next;
  12.         }
  13.     }
  14.  
  15.     Node head;          //记录头结点信息即可(头结点下标为-1)
  16.     int size;
  17.  
  18.     publicLinkList()
  19.     {
  20.         this.head =newNode(null, null);
  21.         this.size =0;
  22.     }
  23.  
  24.     //定位
  25.     publicNode locate(int index) throws Exception
  26.     {
  27.         //容错性
  28.         if(index <-1|| index > size)
  29.             thrownewException("参数错误!");
  30.  
  31.         //定位到temp指向第index个(index为下标,从0开始)
  32.         Node temp = head;
  33.         for(int i =-1; i < index; i++)
  34.             if(temp != null)
  35.                 temp = temp.next;
  36.  
  37.         return  temp;
  38.     }
  39.  
  40.  
  41.     publicvoiddelete(int index) throws Exception
  42.     {
  43.         //容错性
  44.         if(isEmpty())
  45.             thrownewException("链表为空,无法删除!");
  46.         if(index <0|| index > size -1)
  47.             thrownewException("参数错误!");
  48.  
  49.         Node temp = locate(index -1);                        //定位到要操作结点的前一个结点对象
  50.         temp.next = temp.next.next;
  51.         size--;
  52.     }
  53.  
  54.  
  55.     publicvoid insert(int index,Object obj) throws Exception
  56.     {
  57.         //容错性
  58.         if(index <0|| index > size )
  59.             thrownewException("参数错误!");
  60.  
  61.         Node temp = locate(index -1);                        //定位到要操作结点的前一个结点对象
  62.         Node p =newNode(obj,temp.next);
  63.         temp.next = p;
  64.         size++;
  65.     }
  66.  
  67.     public boolean isEmpty(){
  68.         return size==0;
  69.     }
  70.  
  71.     publicint size(){
  72.         returnthis.size;
  73.     }
  74.  
  75. }
 
 
  1. publicclassTest{
  2.  
  3.     publicstaticvoid main(String[] args) throws Exception{
  4.         LinkListlist=newLinkList();
  5.         for(int i =0; i <10; i++){
  6.             int temp =((int)(Math.random()*100))%100;
  7.             list.insert(i, temp);
  8.             System.out.print(temp +" ");
  9.         }
  10.  
  11.         list.delete(4);
  12.         System.out.println("\n"+"after deleting the 5th number:");
  13.         for(int i =0; i <list.size; i++){
  14.             System.out.print(list.locate(i).data.toString()+" ");
  15.         }
  16.     }
  17.  
  18. }
 
输出:
  1. 29263748496266877839
  2. after deleting the 5th number:
  3. 292637486266877839 
 
 
 
 





易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!