1. 程式人生 > 其它 >連結串列(資料結構複習)java

連結串列(資料結構複習)java

技術標籤:java資料結構連結串列

1. 連結串列的結構

  1. 連結串列的結構
public class Linked <N>{
    //鏈式儲存的結點
    private class Node{
        private N n;
        private Node next;
        public Node(N n, Node next) {
            this.n = n;
            this.next = next;
        }
        public Node(N n) {
            this
(n,null); } } private Node head;//頭結點 private int size;//結點個數 /** * 連結串列的構造方法 */ public Linked() { this.head = null; this.size = 0; } /** * 獲取連結串列元素個數 * @return */ public int getSize() { return size; } }
  1. 結點的結構
private
class Node{ private N n; private Node next; public Node(N n, Node next) { this.n = n; this.next = next; } public Node(N n) { this(n,null); } }

2. 對連結串列的操作

1.在指定索引插入一個元素(增)

public void add(N n ,int index){
      Node node =
new Node(n); if(index < 0 || index > size){ throw new IllegalArgumentException("the index is errow"); } if(index == 0){ node.next = head; head = node; size++; } Node preNode = head; for(int i = 0;i<index-1;i++ ){ preNode = preNode.next; } node.next = preNode.next; preNode.next = node; size++; }
  1. 在指定索引刪除一個元素(刪)
public N deleteIndex(int index){
        if(index < 0 || index >= size){
            throw new IllegalArgumentException("the index is errow");
        }
        Node delNode = null;
        Node preNode = head;
        for(int i = 0;i<index-1;i++ ){
            preNode = preNode.next;
        }
        if(index == size-1 ){
            delNode = preNode.next ;
            preNode.next = delNode.next;
        }
        return delNode.n;
    }

  1. 更改指定索引元素(改)
    public N change(int index,N n2){
        if(index < 0 || index >= size){
            throw new IllegalArgumentException("the index is errow");
        }
        Node changeNode = head;
        for (int i = 0; i < index; i++) {
            changeNode = changeNode.next;
        }
        changeNode.n = n2;
        return changeNode.n;
    }
  1. 查詢指定索引元素
    public N getIndexN(int index){
        Node getNode = head;
        for (int i = 0; i < index; i++) {
            getNode = getNode.next;
        }
        return getNode.n;
    }