package link;
/**
* 链表进行操作(Java实现)
* @author 欸嘿
*
*/
public class LinkDemo {
//头节点指针
private Node head;
//尾节点指针
private Node last;
//链表的实际长度
private int size;
/**
* 链表插入元素
*/
public void insert(int data,int index) {
if(index<0||index>size) {
throw new IndexOutOfBoundsException("超出链表范围");
}
Node insertedNode=new Node(data);
if(size==0)
{
//空链表
head=insertedNode;
last=insertedNode;
}
else if(index==0)
{
//插入头部
insertedNode.next=head;
head=insertedNode;
}
else if(size==index) {
//插入尾部
last.next=insertedNode;
last=insertedNode;
}
else {
//插入中间
Node prevNode=get(index-1);
insertedNode.next=prevNode.next;
prevNode.next=insertedNode;
}
size++;
}
/**
* 链表的删除元素
*
*/
public Node remove(int index) {
if(index<0||index>=size) {
throw new IndexOutOfBoundsException("超出链表节点范围");
}
Node removedNode=null;
if(index==0) {
//删除头节点
removedNode=head;
head=head.next;
}else if(index==size-1) {
//删除尾节点
Node prevNode=get(index-1);
removedNode=prevNode.next;
prevNode.next=null;
last=prevNode;
}
size--;
return removedNode;
}
/**
* 链表查找元素
*/
public Node get(int index) {
if(index<0||index>=size) {
throw new IndexOutOfBoundsException("超出链表节点范围");
}
Node temp=head;
for (int i = 0; i < index; i++) {
temp=temp.next;
}
return temp;
}
//链表的输出
public void output() {
Node temp=head;
while(temp!=null) {
System.out.println(temp.data);
temp=temp.next;
}
}
private static class Node{
int data;
Node next;
Node(int data){
this.data =data;
}
}
public static void main(String[] args) {
LinkDemo myLinkedList=new LinkDemo();
myLinkedList.insert(3, 0);
myLinkedList.insert(7, 1);
myLinkedList.insert(9, 2);
myLinkedList.insert(5, 3);
myLinkedList.insert(6, 1);
myLinkedList.remove(0);
myLinkedList.output();
}
}
java数据结构(链表)操作
最新推荐文章于 2022-04-10 12:46:55 发布