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;
}