連結串列(資料結構複習)java
阿新 • • 發佈:2021-02-01
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;
}
}
- 結點的結構
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++;
}
- 在指定索引刪除一個元素(刪)
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;
}
- 更改指定索引元素(改)
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;
}
- 查詢指定索引元素
public N getIndexN(int index){
Node getNode = head;
for (int i = 0; i < index; i++) {
getNode = getNode.next;
}
return getNode.n;
}