数据结构之链表

首先构造一个基础的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;
      }
      }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章