- 创建节点类
public class Node {
int n;
Node next;
}
- 编写方法
public class MyLinkList {
Node head = new Node();
private int len=0;
// 获取长度
public int size(){
return len;
}
// 添加元素到最后
public void add(int n){
// 新建节点
Node node=new Node();
node.n=n;
// 如果头节点后没有元素,则直接拼接,如果有,则找到最后的元素
Node cur=head;
while (cur.next!=null){
cur=cur.next;
}
cur.next=node;
// 长度
len++;
}
// 查找指定位置的元素
public int get(int n){
// 从头节点开始一直找
Node cur=head;
for(int i=0; i<=n; i++){
cur=cur.next;
}
return cur.n;
}
// 插入元素到指定位置
public void add(int i, int n){
// 新建元素节点
Node node=new Node();
node.n=n;
// 找到指定元素的前一个
Node cur=head;
for(int j=0; j<i; j++){
cur=cur.next;
}
System.out.println("指定元素的前一个" + cur.n);
// 找到指定的元素
Node cur1 = cur.next;
System.out.println("指定元素" + cur1.n);
// 前一个元素后拼接传入的值
cur.next=node;
// 传入的值后拼接原来指定的值
node.next=cur1;
// 长度++
len++;
}
// 移除指定位置的元素
public void remove(int i){
// 找到指定元素的前一个
Node cur=head;
for(int j=0; j<i; j++){
cur=cur.next;
}
System.out.println("指定元素的前一个" + cur.n);
// 找到指定的元素
Node cur1 = cur.next;
System.out.println("指定元素" + cur1.n);
// 指定元素的后一个
Node cur2 = cur1.next;
System.out.println("指定元素的后一个" + cur2.n);
// 前一个元素直接拼接后一个元素
cur.next=cur2;
// 长度--
len--;
}
}
- 测试
public class test {
public static void main(String[] args) {
MyLinkList list=new MyLinkList();
// 添加
list.add(10);
list.add(20);
list.add(30);
// 获取长度
System.out.println(list.size());
// 获取指定位置的值
System.out.println(list.get(1));
// 遍历
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + ",");
}
System.out.println();
// 插入到指定位置
list.add(2,25);
// 测试
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + ",");
}
System.out.println("目前长度:" + list.size());
// 移除元素
System.out.println();
list.remove(1);
// 测试
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + ",");
}
System.out.println("目前长度:" + list.size());
}
}
标签:Node,int,list,System,链表,size,模拟,out
From: https://www.cnblogs.com/dogleftover/p/17737037.html