数据结构与算法 您所在的位置:网站首页 linkedlist链表结构 数据结构与算法

数据结构与算法

2023-03-31 03:33| 来源: 网络整理| 查看: 265

单向链表Node理解链表实现链表主要接口练习双向链表单向链表Node理解链表

Node 对象内部有value 和 next与arraylist很多接口相同,add remove clear等;但是不能用继承,它们两个没有什么可以抽取到父类的公共代码。但是可以用接口,只声明公共接口,不实现。Node为单独类,里面保存值和下一个node的引用。

public class Test { public static void main(String[] args) { // 创建了三个Node ListNode list1 = new ListNode(1); ListNode list2 = new ListNode(2); ListNode list3 = new ListNode(3); // 将他们串起来 list1.next = list2; // 就相当于在类里面的 ListNode next = new ListNode(2); list2.next = list3; // 输出一下 System.out.println(list1.next.next.val); //3 }}class ListNode{ int val; ListNode next; // 声明next变量为ListNode 用的时候再给它赋值 这是一个引用 类似指针 public ListNode(int val){ this.val = val; }}

实现链表主要接口package com.ay.linkedlist;public interface List { void clear(); int size(); boolean isEmpty(); void add(int index,E element); boolean contains(E element); void add(E element); E get(int index); E remove(int index); E set(int index,E element); int indexOf(E element);}package com.ay.linkedlist;public class LinkedList implements List{ private int size; //只用在Linkedlist 定义为内部类 private Node first; private int ELEMENT_NOT_FOUND=-1; @Override public void clear() { first=null; size = 0; } @Override public int size() { return size; } @Override public boolean isEmpty() { return size==0; } // @Override public void add(int index, E element) { Node nodes = new Node(element); if(index == 0){ first = new Node(element,first); }else{ nodes.next = node(index-1).next; node(index-1).next = nodes;// Node prev = node(index-1);// prev.next = new Node(element,prev.next); } size ++; } @Override public boolean contains(E element) { return indexOf(element)!=ELEMENT_NOT_FOUND; } @Override public void add(E element) { add(size,element); } @Override public E get(int index) { Node nodes = first; for (int i = 0; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有