數據結構之鏈表

首先構造一個基礎的List 需要什麼條件 ? (思考)

長度 : length
索引 : index
元素 : x
第一 長度和索引的關係 max(index) = length -1

開始構造 :
public interface <T> LList {
// 獲取長度 的方法
public int size () ;
// 判斷空
public boolean is Empty () ;
//插入元素
public void insert ( int index , object x ) ;
//刪除元素
public void delete ( int dex );
// 查找元素
public Object get ( int dex );

}

下面就是這些方法的具體實現
一 . 單向循環鏈表
思考 :單向鏈表是個是什麼東西跟這個List 普通列表有什麼區別呢 ,畫個單向鏈表圖
數據結構之鏈表
實際的結構應該是這樣的 head --->> 對象 + 引用--->> 對象 + 引用--->> 對象 + 引用
實際上單鏈表的存儲是分散的,實際存放是根據每個Node 的next 指針查找下一個對象
數據結構之鏈表
開始實現單鏈表 (注意這裏是帶頭節點的插入操作)
思考 結構 :Node head = NULL ;
節點的值 data
next 爲下個節點的引用
public class LinkList {
Node head = NULL ; //頭結點爲空
/**

  • 鏈表中的節點,data代表節點的值,next是指向下一個節點的引用
  • @author Hibernate sir
    */
    public class Node {
    Node next = NULL ;
    int data ;
    public Node ( int data ){
    this.data = data ;
    }
    }
    //插入元素
    public void addNode ( int x ) {
    Node newnode = new Node (x) ; //實例化一個節點
    if (head = = null ){ //鏈表表頭爲空,返回表頭
    head = newnode ;
    return ;
    }
    Node tmp = head;
    while (tmp.next != null) {
    tmp = tmp.next;
    }
    tmp.next = newNode;
    }
    //刪除元素
    public boolean deleteNode( int index ){
    if (index < 1 || index > length()) {
    return false;
    }
    if (index == 1) {
    head = head.next;
    return true;
    }
    int i = 1;
    Node preNode = head;
    Node curNode = preNode.next;
    while (curNode != null) {
    if (i == index) {
    preNode.next = curNode.next;
    return true;
    }
    preNode = curNode;
    curNode = curNode.next;
    i++;
    }
    return false;
    }
    /**
    • @return 返回節點長度
      */
      public int length() {
      int length = 0;
      Node tmp = head;
      while (tmp != null) {
      length++;
      tmp = tmp.next;
      }
      return length;
      }
      }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章