03算法与数据结构-创新互联

单向链表的反转

创新互联从2013年创立,是专业互联网技术服务公司,拥有项目成都做网站、成都网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元宜良做网站,已为上家服务,为宜良各地企业和个人服务,联系电话:028-86922220
// 1 ->2 ->3 ->null
// 3 ->2 ->1 ->null
public static SingleNode reverse(SingleNode head) {
        SingleNode next = null;
        SingleNode pre = null;
        while (head != null) {
            // 使用next变量 将下一个节点保存下来
            next = head.getNext();
            // 然后将 head的指针指向 前一个,因为要做反转操作
            head.setNext(pre);
            // 在开始下一次循环的时候 把当前的这个节点保存下来
            pre = head;
            // 然后将指针 移动到下一个节点
            head = next;
        }
        // 最后因为head已经移动到null的位置,所以要将head的前一个节点作为结果返回,然后在用变量接收这节点
        return pre;
}

双向链表的反转

public static DoubleNode reverse(DoubleNode head) {
        DoubleNode next = null;
        DoubleNode pre = null;
        while (head != null) {
            // 使用变量保留下一个节点
            next = head.getNext();
            // 后指针指向前
            head.setNext(pre);
            // 前指针指向后
            head.setPre(next);
            // 然后把当前节点进行记录 放到前面
            pre = head;
            // 然后把指针向后移动
            head = next;
        }
        return pre;
    }

在单链表当中删除给定的值

public static SingleNode deleteNum(SingleNode head, String value) {
        while (head != null) {
            // 找第一个不符合的节点来作为头
            if (!head.getValue().equals(value)) {
                break;
            }
            head = head.getNext();
        }

        SingleNode pre = head;
        SingleNode cur = head;
        while (cur != null) {
            if (cur.getValue().equals(value)) {
                // 如果相同,代表这个节点需要被删除
                pre.setNext(cur.getNext());
            }else {
                pre = cur;
            }
            cur = cur.getNext();
        }
        return head;
    }

    public static SingleNode generateChain() {
        SingleNode node1 = new SingleNode("1");
        SingleNode node2 = new SingleNode("2");
        SingleNode node3 = new SingleNode("1");
        SingleNode node4 = new SingleNode("3");

        node1.setNext(node2);
        node2.setNext(node3);
        node3.setNext(node4);
        node4.setNext(null);
        return node1;
    }

    public static void main(String[] args) {
        SingleNode node = deleteNum(generateChain(), "1");
        while (node != null) {
            System.out.print(node.getValue() + ",");
            node = node.getNext();
        }
    }
栈和队列

栈:先入后出 类似弹夹

队列:先入先出 类似排队

哈希表和有序表

在java当中 Hashmap 就是哈希表,并且他的所有增删改查所有操作时间复杂度都为O1

在java当中TreeMap 就是有序表,这个有序表拥有哈希表全部的功能,并且,可以根据

key进行排序

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享名称:03算法与数据结构-创新互联
本文URL:http://ybzwz.com/article/cdcsoo.html