[Java]链表的打印,反转与删除

class Node{
   public int value;
      public Node next=null;
      public Node(int value) {
   this.value=value;
  }
      }
public class LinkedList {
  public static void display(Node head) {
   for(Node cur=head;cur!=null;cur=cur.next) {
    System.out.printf("(%d)->",cur.value);
   }
   System.out.printf("null");
   System.out.printf("%n");
  }
  public static Node pushFront(Node head,int value) {
   Node newnode=new Node(value);
   newnode.next=head;
   return newnode;
  }
  public static Node pushBack(Node head,int value) {
   if(head==null) {
    return pushFront(head,value);
   }else {
   Node newnode=new Node(value);
   Node last=getlast(head);
   last.next=newnode;
   
   }
   return head;
  }
  public static Node getlast(Node head) {
       Node cur=head;
   while(cur.next!=null) {
    cur=cur.next;
   }
   return cur;
  }
  public static Node reverseList(Node head) {
   Node newList=null;
   Node cur=head;
   while(cur!=null) {
    Node next=cur.next;
    cur.next=newList;
    newList=cur;
    cur=next;
   }
   return newList;
  }
  public static Node removeElements(Node head,int value) {
   Node newlist=null;
   Node cur=head;
   while(cur!=null) {
    Node next=cur.next;
    Node last=null;
    if(cur.value!=value) {
     if(newlist==null) {
      cur.next=newlist;
      newlist=cur ;
     }else {
       last=newlist;
      while(last.next!=null) {
       last=last.next;
      }
      last.next=cur;
      cur.next=null;
     }
    }
    cur=next;
   }
   return newlist;           
  }
 public static void main(String[] args) {
  Node head=null;
  head=pushBack(head,1);
  head=pushBack(head,2);
  head=pushBack(head,3);
  display(head);
  head=pushFront(head,10);
  head=pushFront(head,20);
  head=pushFront(head,30);
  display(head);
  head=reverseList(head);
  display(head);
  head=pushBack(head,1);
  display(head);
  head=removeElements(head,1);
    display(head);
 } 
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值