定义链表
private static class SignalLink{
int data;
SignalLink next;
SignalLink(){
}
SignalLink(int data){
this.data=data;
}
}
初始化链表
private static SignalLink addLink(int [] arr,SignalLink link){
SignalLink head=link;
SignalLink tmp =new SignalLink(0);
if (head==null) head=tmp;
int i=0;
while (i<arr.length){
SignalLink t =new SignalLink(arr[i]);
t.next=head.next;
head.next=t;
head=head.next;
i++;
}
return link.next;
}
打印链表
private static void printLink(SignalLink link){
SignalLink head=link;
int i=1;
while (head!=null){
System.out.println("第"+i+"个数是"+head.data);
head=head.next;
i++;
}
}
指定插入数据
private static SignalLink insertData(SignalLink link, SignalLink dataLink,int target){
SignalLink head =link;
int len =getLen(link);
if(len<1||target>len+1){
System.out.println("原链表不满足条件!");
return link;
}
else if(target==1){
SignalLink insert=dataLink;
insert.next=head;
return dataLink;
}
else{
int i=1;
while (i<target-1){
head=head.next;
i++;
}
SignalLink cur=head.next;
dataLink.next=cur;
head.next=dataLink;
return link;
}
}
指定删除数据
private static SignalLink delIndex(SignalLink link, int index){
if(index==0||index>getLen(link)){
System.out.println("指定删除失败不在范围内!");
return link;
}
else if(index==1){
SignalLink head=link;
head=head.next;
return head;
}
else{
int i =1;
SignalLink head=link;
while(i<index-1){
head=head.next;
i++;
}
SignalLink cur=head.next;
head.next=cur.next;
}
return link;
}
主函数
public static void main(String[] args) {
SignalLink link=addLink(new int[]{1, 6, 9, 12},new SignalLink());
System.out.println("***************初始化的链表为***********************");
printLink(link);
System.out.println("***************指定位置插入数据的链表为***************");
printLink( insertData(link,new SignalLink(100),2));
System.out.println("***************指定位置删除数据的链表为***************");
printLink(delIndex(link,4));
}
运行结果