Java---链表的遍历

  • 创建一个链表
//创建一个链表
    public static Node createList(){
    //创建四个Node实例,再定义四个引用来分别指向这四个实例
    //随着方法的结束,a,b,c,d也随之销毁
        Node a=new Node(1);
        Node b=new Node(2);
        Node c=new Node(3);
        Node d=new Node(4);
        //给引用进行赋值
        //"."操作为解引用操作,根据地址找到对象的本体,对对象本体进行操作
        a.next=b;
        //next和b类型相同,都是Node类型的引用,引用之间的"="赋值,就是把地址写过去
        b.next=c;
        c.next=d;
        d.next=null;
        //将a的地址返回到方法外面去了
        return a;

    }
//将a的地址返回到这里,将地址交给head这个引用来保存(head引用保存的也是一个地址)
   Node head=createList();
  • 遍历链表
    (1)带傀儡节点的链表
    head会指向一个单独的傀儡结点(head中存放的是傀儡结点的地址),傀儡结点的next指向a
 for(Node cur=head.next;cur!=null;cur=cur.next){
            System.out.println(cur.val);
        }

(2)不带傀儡结点的链表


 for(Node cur=head;cur!=null;cur=cur.next){
            System.out.println(cur.val);
        }
  • 通过遍历,找到链表的最后一个结点
       Node cur=head;
        while(cur.next!=null){
            cur=cur.next;
        }
        System.out.println(cur.val);
  • 通过遍历,找到链表的倒数第二个结点
        Node cur=head;
        //要保证当前链表不为空,且cur.next不为空,否则进行解引用时会报错
        while(cur!=null&&cur.next!=null&&cur.next.next!=null){
            cur=cur.next;
        }
       System.out.println(cur.val);

  • 遍历链表,找到链表的第N个结点
//取链表的第N个结点,假设N=3

         int N=3;
         //创建一个cur引用指向头节点
          Node cur=head;
          for(int i=1;i<N;i++){
              cur=cur.next;
          }
        System.out.println(cur.val);
  • 计算链表中元素的个数
//计算链表中元素的个数
      int n=0;
        for(Node cur=head;cur!=null;cur=cur.next){
           n++;
       }
        System.out.println(n);
  • 遍历链表,找到链表的倒数第N个结点
       //计算链表中元素的个数
        int n=0;
        for(Node cur=head;cur!=null;cur=cur.next){
           n++;
       }
        //假设要找链表中倒数第三个结点
        int N=3;
        Node cur=head;
        //根据规律可得:倒数第N个结点即整数第n+1-N个结点
          for(int i=1;i<n+1-N;i++){
            cur=cur.next;
          }
        System.out.println(cur.val);
  • 通过遍历,找到链表上是否存在某个元素
       //假设所找的元素为5
        int n=5;
        Node cur=head;
        for(;cur!=null;cur=cur.next){
           if(cur.val==n){
               break;
            }
     }
        if(cur!=null) {
            System.out.println("存在");
        }
        else{
            System.out.println("不存在");
        }
  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值