首頁  >  文章  >  Java  >  java中單鍊錶的介紹以及用法

java中單鍊錶的介紹以及用法

零下一度
零下一度原創
2017-06-25 10:28:031826瀏覽

單鍊錶:
* 1.鍊錶可以是一種有序或無序的清單
* 2.鍊錶的內容通常儲存在記憶體中分散的為止
* 3.鍊錶由節點組成,每一個節點具有相同的結構
* 4.節點分為資料域和鏈域,資料域存放節點內容,鏈域存放下一個節點的指標

 

package myLinkList;

public class MyLinkedList {

/**
*Node:節點物件
* 包含資料域data和鏈域next(指向下一個節點物件)
*/
class Node {
  private T data;
  private Node next;
  public Node( ){

  }
  //節點初始化
  public Node(T data,Node next){
    this.data = data;
  }
}

private Node header;//鍊錶頭節點
private Node tailer;//鍊錶尾節點
private int size;//鍊錶長度(節點個數)


/**
* 鍊錶初始化
*/
public MyLinkedList() {//空參構造
  header = null;
  tailer = null;
# }
public MyLinkedList(T data) {//有參構造
  header = new Node(data,null);//創建頭結點
  tailer = header;
  size++;
}

/**
 * 求鍊錶長度
 * @return
 */
public int getSize() {
  return size;
}

/**
 * 傳回索引為index的節點的資料
 * @param index 索引
 * @return
 */
public T get( int index) {
  if(index < 0 || index > size-1)
    throw new IndexOutOfBoundsException("索引越界");
  

public Node getIndexNode(int index){
  if(index < 0 || index > size-1)
    throw new Index。BoundsException("索引越界" throw new Index BoundsException("索引越界" = header;
  for(int i = 0;i  < size; i++) {
    if(i == index) {
   return current;# current; ;
}
  return null;
}

/**
* 傳回element在在鍊錶位置,如果不存在,則回傳-1
* @param tdata
* @return
#*/
public int getIndex(T element) {
  if(element == null)
    return -1;
  Node current = header;
  for(int i = 0; i < size; i++) {
     i;
  }
  current = current.next;
}
  return -1;
}



# /**
* 在鍊錶末端加上element
* @param element
#*/
public void add(T element) {
  Node n = new Node(element,null);
  if(header == null){
  header = n;
    er
}else{
  tailer.next = n;
  tailer = n;
}
  size++;
}

# /**
* 在鍊錶頭新增element
* @param element
#*/
public void addAtheader(T element) {
  header = new Node(element,header);
  if(tailer == null){
   tailer =  };
}

/**
* 在index位置後邊插入元素
* @param index
* @param element
*/
public void insert(int index,T element) {
  if(index<0 || index>size-1) {
    throw new IndexOutOfBoundsException("索引越界");
  }
  if(header==null){
     ==0 ){
    addAtheader(element);
  }else{
      Node current = getIndexNode(index);##   Node current = NodeIndexNode(index);
  腳 腳); ##       current.next = insertNode;
      size++;
    }
  }
}
/**
* 刪除任意位置的節點
* @param index
* @return
*/#  public T deleteNode(int. | index>size-1)
    throw new IndexOutOfBoundsException("索引越界");
  if(index == 0){//在頭部刪除元素
   頭記錄/?節點
    header = header.next;//將頭指標指向下一個節點
    size--;
    return n.data;///輸出節點的內容#/// 輸出節點的內容#」// 輸出節點的內容#////}其他位置刪除
    Node current = getIndexNode(index);//取得目前節點
    Node pre = getIndexNode(index-1);//取得前一個節點
  pre = getIndexNode(index-1);//取得前一個節點
  /將前一個節點的鏈域設為null
    size--;
    return current.data;//返回刪除節點的數據域
  }


}
/**
* 刪除頭節點
* @return
*/
public T deleteHeader(){
  return deleteNode(0);
}
/**
* 刪除尾節點
* @return
*/
public T deleteTailer() {
return deleteNode(size-1);
}

//清空節點
public void clear(){
# 頭= null;
尾= null;
尺寸= 0;
}

/**
* toString();
*/
public String toString(){
if(size == 0)
return "[]";
Node current = header;
StringBuilder sb = new StringBuilder();
sb.append(" [");
while(current.next != null) {
sb.append(current.data).append("  ");
current = current.next;
}
sb.append(current.data).append("]");
傳回sb.toString();
}


## public static void main(String[] args) {
MyLinkedList; link = new MyLinkedList();
link.add("header");
link.add("11");
link.add("22");
link .add("33");
link.addAtheader("newheader");
link.insert(2, "1.5");;

System. out.println(link.getIndex ("11"));
★System.out.println(link.getIndex("88"));
★System.out.println(link.get(0) );
★System.out. println(link.getSize());
System.out.println(link.deleteHeader());
System.out.println(link.deleteTailer( ));
System.out.println( link.deleteNode(1));
、System.out.println(link);
、link.clear();
、System. out.println(link);

、}

##}

以上是java中單鍊錶的介紹以及用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn