package LinkedList;
class ListNode {
int val;
ListNode next;
public ListNode(int val){
this.val=val;
this.next=null;
}
}
class LinkedList{
public static void main(String[] args) {
int[] values=new int[]{1,2,3,4,5};
LinkedList linkedList=new LinkedList();
//初始化链表
linkedList.createList(values);
//打印链表
linkedList.display();
//得到链表长度
System.out.println("链表的长度是:"+linkedList.getLength());
//查找结点——按值查找
linkedList.searchByValue(6);
//查找结点——按索引查找
linkedList.searchByIndex(3);
//插入结点
System.out.println("插入以后:");
linkedList.insertList(5,188);
linkedList.display();
//删除节点
System.out.println("测试删除结点:");
linkedList.deleteList(5);
linkedList.display();
}
ListNode head;
public LinkedList(){
head=null;
}
//初始化链表(尾插法)
public void createList(int[] values){
if(values==null || values.length==0){
return;
}
head=new ListNode(values[0]);
ListNode tail=head;
for(int i=1;i< values.length;i++){
ListNode newNode=new ListNode(values[i]);
tail.next=newNode;
tail=newNode;
}
}
//求链表长度
public int getLength(){
ListNode temp=head;
int length=0;
while (temp!=null){
length++;
temp=temp.next;
}
return length;
}
//查找结点——按值查找
public void searchByValue(int searchVal){
ListNode temp=head;
int index=1;
while(temp!=null){
if(temp.val==searchVal){
break;
}
temp=temp.next;
index++;
}
if(temp==null){
System.out.println("没有你要找的结点");
}else{
System.out.println("你要找的结点在:"+index);
}
}
//查找结点——按索引查找
public void searchByIndex(int index){
boolean flag=true;
if(index<0 || index>=getLength()){
flag=false;
}
ListNode temp=head;
int location=0;
while(temp!=null && location<index){
temp=temp.next;
location++;
}
if(flag){
System.out.println("你要找的结点的值是:"+temp.val);
}else {
System.out.println("输入的索引不正确");
}
}
//插入结点
public void insertList(int index,int val){
if(index<0 ) {
System.out.println("你输入的索引越界了");
return;
}
ListNode insertList=new ListNode(val);
if(index==0){
insertList.next=head;
head=insertList;
return;
}
ListNode temp=head;
int curr=0;
while(curr<index-1){
curr++;
temp=temp.next;
}
insertList.next=temp.next;
temp.next=insertList;
}
//删除结点
public void deleteList(int index){
if(index<0){
System.out.println("你输入的位置越界了");
return;
}
if(index==0){
head=head.next;
return;
}
int curr=0;
ListNode temp=head;
while (curr<index-1){
curr++;
temp=temp.next;
}
temp.next=temp.next.next;
}
//输出链表
public void display(){
ListNode temp=head;
while(temp!=null){
System.out.print(temp.val+" ");
temp=temp.next;
}
System.out.println();
}
}
Java数据结构——单链表的初始化,建立,求表长,查找(按值查找、按序号查找),插入,删除,输出
最新推荐文章于 2024-09-30 10:36:33 发布