java实现单链表以及部分功能
public class Link {
Node head;//定义头节点
class Node{
Node next = null;
int data;
public Node(int data) {
this.data=data;
}
}
//尾插法
public void tail_addNode(int data) {
Node newNode = new Node(data);
if(head==null) {
head=newNode;
}
else {
Node temp = head;
while(temp.next!=null) {
temp=temp.next;
}
temp.next=newNode;
}
}
//头插法
public void head_addNode(int data) {
Node newNode = new Node(data);
if(head==null) {
head=newNode;
}
else {
newNode.next=head;
head = newNode;
}
}
//打印链表
public void printlink() {
Node temp = head;
while(temp!=null) {
System.out.print(temp.data+" ");
temp=temp.next;
}
}
//输出长度
public void printlength() {
int length = 0;
Node temp = head;
while(temp!=null) {
temp=temp.next;
length++;
}
System.out.print(length);
}
//删除第一个值为data的节点
public void deleteData(int data) {
Node temp = head;
boolean flag = true;
if(temp.data==data) {
head=temp.next;
}
else {
while(temp.next.data!=data) {
temp=temp.next;
if(temp.next==null) {
System.out.println("删除"+data+"失败");
flag = false;
break;
}
}
if(flag)
temp.next=temp.next.next;
}
}
public static void main(String[]args) {
Link mylink = new Link();
mylink.head_addNode(1);
mylink.head_addNode(2);
mylink.head_addNode(3);
mylink.tail_addNode(9);
mylink.printlink();
System.out.println();
mylink.deleteData(8);
mylink.deleteData(0);
mylink.printlink();
}
}