思路:
1.两个对象:单链表LinkList、结点Node
2.初始化对象
LinkList:头结点head、长度size
Node:数据data、指针next
3.赋予对象方法
Node:增删改查
代码实现:
class LinkList{
Node head=null;
int size=0;
static class Node{
int data;
Node next;
public Node(int data,Node next){
this.data=data;
this.next=next;
}
}
public Node search(int data){
Node node =head;
int index=0;
while(node!=null){
if(node.data==data){
System.out.println("The index of "+data+" is "+index);
return node;
}
node=node.next;
index++;
}
return null;
}
public void append(int data){
Node newNode=new Node(data,null);
if(size==0){
head=newNode;
}else {
Node node=head;
while(node.next!=null) node = node.next;
node.next = newNode;
}
size++;
}
public void insert(int index, int data){
Node newNode=new Node(data,null);
if(size==0||index==size) append(data);
else if(index>size||index<0) return;
else{
if(index==0){
newNode.next=head;
head=newNode;
}else{
Node node=head;
for(int i=1;i<index;i++) node=node.next;
newNode.next=node.next;
node.next=newNode;
}
size++;
}
}
public void update(int oldData,int newData){
Node node=search(oldData);
if(node==null) return;
else node.data=newData;
}
public void delete(int data){
Node prev=head;
Node node=prev.next;
if(head.data==data){
head=head.next;
size--;
}else {
while(node!=null) {
if (node.data == data) {
prev.next=node.next;
size--;
return;
}
prev=prev.next;
node=node.next;
}
return;
}
}
public void print(){
System.out.print("size:"+size+"\t");
Node node=head;
while(node.next!=null){
System.out.print(node.data+"->");
node=node.next;
}
System.out.println(node.data);
}
}
class Solution {
public static void main(String[] args){
LinkList linkList=new LinkList();
linkList.append(1);
linkList.append(2);
linkList.append(3);
linkList.append(4);
linkList.append(5);
linkList.append(6);
linkList.print();
linkList.insert(5,8);
linkList.print();
linkList.search(6);
linkList.delete(2);
linkList.print();
linkList.update(6,7);
linkList.print();
}
}
运行结果:
size:6 1->2->3->4->5->6
size:7 1->2->3->4->5->8->6
The index of 6 is 6
size:6 1->3->4->5->8->6
The index of 6 is 5
size:6 1->3->4->5->8->7