天津网站建设91fyh,图片制作器app,房地产管理系统,设计网站导航大全线性表#xff08;Linear List#xff09;是数据结构中的一种基本类型#xff0c;它代表了具有相同类型数据元素的一个有限序列。线性表中的数据元素之间是一对一的关系#xff0c;即除了第一个元素外#xff0c;每个元素有且仅有一个前驱元素#xff1b;除了最后一个元素…线性表Linear List是数据结构中的一种基本类型它代表了具有相同类型数据元素的一个有限序列。线性表中的数据元素之间是一对一的关系即除了第一个元素外每个元素有且仅有一个前驱元素除了最后一个元素外每个元素有且仅有一个后继元素。数据元素间的线性关系是一对一的关系。
线性表在Java中可以通过多种方式实现最常见的是使用数组Array和链表LinkedList。下面分别介绍这两种实现方式及其代码。
1. 数组实现的线性表
数组是线性表的一种顺序存储结构它使用一段地址连续的存储单元依次存储线性表的数据元素。
public class ArrayListT {private T[] elements;private int size;private static final int DEFAULT_CAPACITY 10;SuppressWarnings(unchecked)public ArrayList() {this.elements (T[]) new Object[DEFAULT_CAPACITY];this.size 0;}public void add(T element) {if (size elements.length) {resize();}elements[size] element;}private void resize() {T[] newElements (T[]) new Object[elements.length * 2];System.arraycopy(elements, 0, newElements, 0, size);elements newElements;}public T get(int index) {if (index 0 || index size) {throw new IndexOutOfBoundsException(Index: index , Size: size);}return elements[index];}public int size() {return size;}// 其他方法如删除、修改等...
}这个简单的ArrayList类使用泛型T来存储任意类型的元素并维护一个数组elements来存储数据。add方法用于向线性表中添加元素如果当前数组已满则通过resize方法扩大数组容量。get方法用于获取指定索引位置的元素。size方法返回线性表中元素的数量。
2. 链表实现的线性表
链表是线性表的链式存储结构用一组任意的存储单元来存放线性表的元素。为了表示每个数据元素与其直接后继数据元素之间的逻辑关系对数据元素除了存放其本身的信息外还需存放一个指示其直接后继的信息即直接后继的存储位置。
public class NodeT {T data;NodeT next;public Node(T data) {this.data data;this.next null;}
}public class LinkedListT {private NodeT head;private int size;public LinkedList() {this.head null;this.size 0;}public void add(T element) {NodeT newNode new Node(element);if (head null) {head newNode;} else {NodeT current head;while (current.next ! null) {current current.next;}current.next newNode;}size;}public T get(int index) {if (index 0 || index size) {throw new IndexOutOfBoundsException(Index: index , Size: size);}NodeT current head;for (int i 0; i index; i) {current current.next;}return current.data;}public int size() {return size;}// 其他方法如删除、修改等...
}在这个LinkedList类中我们定义了一个内部类Node来存储数据和指向下一个节点的引用。add方法用于向链表的末尾添加新元素而get方法则通过遍历链表来找到指定索引位置的元素。size方法返回链表中元素的数量。
使用示例
public class Main {public static void main(String[] args) {// 使用数组实现的线性表ArrayListString arrayList new ArrayList();arrayList.add(Element 1);arrayList.add(Element 2);