Node.java
public class Node {
//数据
Integer data;
//指针(下一个结点)
Node next;
//无参构造函数,用于初始化
public Node(){
}
//有参构造函数,用于初始化
public Node(int data){
this.data=data;
}
}
LinkList.java
public class LinkList {
//结点个数
int size;
//头结点,尾结点
Node head,tail;
//无参构造函数
public LinkList(){
head = new Node();
tail = head;
size = 0;
}
//添加
public void add(int i){
//创建一个新的结点
Node node = new Node(i);
//设置尾结点的下一个节点为新结点
tail.next = node;
//设置尾结点为新结点
tail = node;
//结点个数增加
size++;
System.out.println("添加成功");
return;
}
//插入
public void insert(int index,int i){
//检测位置是否超出范围
if (index<1&&index>size+1){
System.out.println("位置错误");
}
Node node = head.next;
//找到第j个位置的结点
for(int j=1;j<=index;j++){
node = node.next;
}
Node node1 = head.next;
//找到第j-1个位置的结点
for(int j=1;j<=index-1;j++){
node1 = node1.next;
}
//添加的结点数据
Node node2 = new Node(i);
//如果在头结点插入
if(index==1){
head.next = null;
head.next = node2;
}
//如果不在头结点插入
else{
node1.next = null;
node1.next = node2;
}
//连接结点
node2.next=node;
//结点个数增加
size++;
System.out.println("插入成功");
return;
}
//删除
public void delete(int index){
//检测位置是否超出范围
if (index<1&&index>size+1){
System.out.println("位置错误");
}
Node node = head.next;
//找到第i个位置的结点
for(int i=1;i<=index-1;i++){
node = node.next;
}
Node node1 = head.next;
//找到第i-1个位置的结点
for(int i=1;i<=index-2;i++){
node1=node1.next;
}
//如果不是在第一个结点
if(index!=1){
//最后一个结点
if(index==size){
node1.next = null;
}
//不是最后一个结点
else{
node1.next = null;
node1.next = node.next;
}
node.next=null;
node.data=0;
}
else{
//如果是在第一个结点
head.next = null;
head.next = node.next;
node.next = null;
node.data = 0;
}
//结点个数减少
size--;
System.out.println("删除成功");
return;
}
//结点个数
public void size(){
System.out.println("元素个数有"+size+"个");
return;
}
//得到元素位置
public void get(int i){
int j=0;
Node node= head.next;
while(node.next != null){
j++;
if(node.data == i){
System.out.println("位置在单链表的第"+j+"个");
return;
}
node = node.next;
}
System.out.println("找不到元素"+i);
}
//显示
public void listshow(){
StringBuilder sb = new StringBuilder();
if(head == null){
System.out.println("Empty List");
}
else{
Node node = head;
while(node.next.next != null){
sb.append(node.next.data+"->");
node=node.next;
}
sb.append(node.next.data);
}
System.out.println(sb.toString());
return;
}
}
main.java
public class main {
public static void main(String[] args) {
LinkList list = new LinkList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.listshow();
list.insert(4,6);
list.listshow();
list.size();
list.delete(3);
list.listshow();
list.get(2);
}
}