java实现单链表:单链表的自定义添加删除操作
class Node{
int data;
Node next=null;//指向下一个节点
public Node(int data) {
this.data = data;
}
}
public class LinkTable {
/**
* @链表的实现
*/
Node head=null;//头节点
public LinkTable() {}
public LinkTable(Node head) {
this.head = head;
}
//向链表中插入数据
public void addNode(int d){
Node newNode= new Node(d);
if(head==null){
head=newNode;
return;
}
Node tmp=head;
while(tmp.next!=null){
tmp=tmp.next;
}
tmp.next=newNode;
}
//返回链表的长度
public int length(){
int len=0;
Node tmp=head;
while(tmp!=null){
len++;
tmp=tmp.next;
}
return len;
}
//删除链表中指定(第i个)位置的节点,从1开始计数
public boolean deleteNode(int m){
if(head==null || m<=0 || m>length()){
return false;
}
if (m == 1) {
head = head.next;
return true;
}
Node tmp=head;
Node p=null;
int i=1;
while(i<m-1){
tmp=tmp.next;
i++;
}
if(i==m-1){
p=tmp.next.next;
tmp.next=p;
return true;
}
return false;
}
//输出自定义链表中的数据
public void printLinkList(){
Node tmp=head;
while(tmp!=null){
System.out.print(tmp.data+" ");
tmp=tmp.next;
}
System.out.println("");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
LinkTable lt=new LinkTable();
lt.addNode(1);
lt.addNode(2);
lt.addNode(3);
lt.printLinkList();
System.out.println("---------------------------");
System.out.println(lt.length());
System.out.println(lt.deleteNode(1));
System.out.println("---------------------------");
lt.printLinkList();
}
}