//单向链表结点的定义
class ListNode{
int data;//假设数据类型是整数型
ListNode next;
//构造函数
public ListNode(int data){
this.data=data;
this.next=null;
}
}
//单向链表的定义
class MylinkedList{
ListNode head;
int size;
public MylinkedList(){
this.head=null;
this.size=0;
}
}
//创建链表
public static void linkedListCreate(MylinkedList list){
//初始化链表
list.head=null;
list.size=0;
}
//销毁链表
public static void linkedListCreate(MylinkedList list){
//遍历链表,释放每个结点
while(list.head!=null){
ListNode temp=temp;
list.head=list.head.next;
temp.next=null;//断开节点与链表的连接
}
list.size=0;
}
//往链表第i个位置插入值为value的元素
public static void linkedListInsert(MylinkedList list,int i,int value){
//检查索引的合法性
if(i<0||i>=size){
System.out.println("Invalid index\n");
return;
}
//创建新的节点
ListNode newNode=new ListNode(value);
//如果是在链表头部插入
if(i==0){
newNode.next=list.head;
list.head=newNode;
}else{
//如果是在链表中间或尾部插入,首先创建一个current指针将其初始化为链表头部,然后用它遍历找到插入位置的前一个结点
ListNode current=list.head;
for(int j=0;j<i-1;j++){
current=current.next;
}
newNode.next=current.next;
current.next=newNode;
}
list.size++;
}
//删除链表list的第i个节点
public static void linkedListRemove(MylinkedList list,int i){
//检查索引的合法性
if(i<0||i>=list.size){
System.out.println("Invalid index\n");
return;
}
//如果删除的是头节点
if(i==0){
list.head=list.head.next;
}else{
ListNode current=list.head;
//找到第i-1个节点
for(int j=0;j<i-1;j++){
current=current.next;
}
//删除第i个节点
current.next=current.next.next;
}
list.size--;
}
//查找链表中list中值为value的结点,并返回
public static ListNode linkedListFind(MylinkedList list,int value){
ListNode current=list.head;
while(current!=null){
if(current.data==value){
return current;
}
current=current.next;
}
return null;
}
//获取链表中第i个结点
public static ListNode linkedListGet(MylinkedList list,int i){
if(i<0||i>=list.size){
System.out.println("Invalid index\n");
return null;
}
ListNode current=list.head;
for(int j=0;j<i;j++){
current=current.next;
}
return current;
}
//更新链表list中第i个结点的值为value
public static void linkedListUpdate(MylinkedList list,int i,int value){
ListNode node=linkedListGet(list,i);
if(node!=null){
node.data=value;
}else{
System.out.println("Invalid index\n");
}
}