java实现单链表的初始化,创建,删除,插入,查找,排序,同项删除,退出等功能

          实习的最后一天,是在不想这样干坐着,上网看着那些无聊的信息。 送上一句:此刻打盹,你将做梦,此刻学习,你将圆梦。 数据结构与算法是我一直想去精通,但是一直没搞出个所以然来,好吧,今天就从单链表下手吧。结点包含两个域:data域---存放结点值的数据域;next域---存放结点的直接后继的地址(位置)的指针域(链域)。链表通过每个结点的链域将线性表的N个结点按其逻辑顺序链接在一起;每个结点只有一个链域的链表称为单链表(Single Linked List)。

      第一:结点本身就是一个类,现在先声明结点类。

package demo.zhuchuan.first;
public class Node {/*节点类*/
  private int data;        /*节点数据*/
  private Node node_next; /*节点的下一个节点*/
  public Node(int val_data){ /*节点构造函数*/
  this.data = val_data;
  node_next = null;
  }
  public void setNode_next(Node val_node){/*设置节点的下一个节点*/
  node_next = val_node;
  }
  public Node getNode_next(){/*获取节点的下一个节点*/
  return node_next;
  }
  public void printNode(){  /*输出节点数据*/
  System.out.println(this.data+" ");
  }
}

      第二:声明一个访问链表的类。

package demo.zhuchuan.first;

public class SingleLinkedList {/*单链表类*/

    private Node pointer_head,pointer_tail;/*链表的头指针和尾指针,都是伪指针,实属节点*/
    
    public SingleLinkedList(){/*单链表构造函数*/
     pointer_head = pointer_tail =null;/*指针初始化都为空*/
    }
    
    public boolean isEmpty(){/*判断链表是否为空函数*/
     return pointer_head == null;
    }
    
    public void addNode(int val_data){/*链表增加节点函数*/
     if(this.isEmpty()){/*判断链表是否为空*/
     pointer_head = pointer_tail = new Node(val_data);/*链表为空,头指针和尾指针都指向新增节点*/
     }else{
     pointer_tail.setNode_next(new Node(val_data));/*链表不为空,新增节点连接到表尾,尾指针指向新增节点*/
     pointer_tail = pointer_tail.getNode_next();   
     }
    }
    
    public void printListNode(){/*输出链表函数*/
     for(Node temp = pointer_head;temp != null;temp = temp.getNode_next()){
      temp.printNode();
     }
    }
    
public static void main(String[] args) {

SingleLinkedList singleLinkedList = new SingleLinkedList();
singleLinkedList.addNode(1);
singleLinkedList.addNode(2);
singleLinkedList.addNode(3);
singleLinkedList.printListNode(); 
}
}

     

     完成了第一步,初始化了,接下来要做的就是插入、删除了,接着把相关的时间什么复杂度搞一下。

 


版权声明:本文为qiucaijuan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。