码迷,mamicode.com
首页 > 编程语言 > 详细

链表操作Java实现

时间:2019-09-27 19:17:22      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:rom   print   基本   div   简单   建表   bsp   java实现   lse   

单链表

1、头插法建表

static ListNode creatFromHead() {
        ListNode head = new ListNode(-1);
        for(int i = 1; i < 5;i++) {
            ListNode p = new ListNode(i);
            p.next = head.next;
            head.next = p;
        }
        return head;
    }

2、尾插法建表

static ListNode creatFromTail() {
        ListNode head = new ListNode(-1);
        ListNode next = head;
        for(int i = 1; i < 5; i++) {
            ListNode p = new ListNode(i);
            next.next = p;
            next = p;
        }
        return head;
    }

 3、查找第i个节点

static boolean find(ListNode l, int i) {
        if(l != null) {
            System.out.println("nullpointer");
        }
        if(l.next == null || i <=0) { return false; }
        ListNode p = l.next;
        int j = 1;//统计第几个节点
        while((p.next != null) && (j<i)) {
            p = p.next;
            j++;
        }
        if(i == j) {
            return true;
        }
        return false;
    }

 4、按值查找

static boolean findValue(ListNode l, int i) {
        if(l != null) {
            System.out.println("nullpointer");
        }
        if(l.next == null) { return false; }
        ListNode p = l.next;
        while(p != null) {
            if(p.i == i) { return true; }
            p = p.next;
        }
        return false;
    }

 5、计算链表长度

static int length(ListNode l) {
        if(l != null) {
            System.out.println("nullpointer");
        }
        int count = 0;
        if(l.next == null) { return 0; }
        ListNode p = l.next;
        while(p != null) {
            count++;
            p = p.next;
        }
        return count;
    }

 6、插入元素

static boolean add(ListNode l, int i, ListNode element) {
        if(l != null && element != null) {
            System.out.println("nullpointer");
        }
        //判断输入i
        //if(i ) {}
        ListNode p = l;
        int j = 0;
        while(p.next != null && j < i-1) {
            p = p.next;
            j++;
        }
        if(j == (i-1)) {
            element.next = p.next;
            p.next = element;
            return true;
        }
        return false;
    }

 7、打印链表

static void printLinkList(ListNode head) {
        if(head != null) {
            System.out.println("nullpointer");
        }
        head = head.next;
        while(head != null) {
            ListNode next = head.next;
            System.out.print(head + " ");
            head = next;
        }
        System.out.println();
    }

 

链表的删除操作就不说了,和上面的操作差不多,先找第i-1各元素,然后改指针就OK,比较简单。

循环链表,在表的首尾进行操作比较合适。

双向链表,寻找前驱节点比较合适。

操作方式都差不多,还是要把最基本的单链表搞会,其他的变化一下就好。

 

链表操作Java实现

标签:rom   print   基本   div   简单   建表   bsp   java实现   lse   

原文地址:https://www.cnblogs.com/mgblogs/p/11594604.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!