自学内容网 自学内容网

数据结构之 线性结构

线性结构是数据元素之间存在一对一关系的数据结构。线性结构中的数据元素之间存在一对一的线性关系,除了首尾元素外,每一个元素都有且只有一个前驱和一个后继。常见的线性结构有:数组、链表、栈、队列等。

下面我将为你提供Java中这些线性结构的简单实现和详细代码。

1. 数组 (Array)

数组是最简单的线性结构,它按照顺序存储元素。

public class ArrayDemo {
    public static void main(String[] args) {
        int[] arr = new int[10]; // 创建一个长度为10的整型数组
        for (int i = 0; i < arr.length; i++) {
            arr[i] = i; // 初始化数组
        }
        for (int value : arr) {
            System.out.print(value + " "); // 打印数组元素
        }
    }
}

2. 链表 (LinkedList)

链表由一系列节点组成,每个节点包含数据域和指向下一个节点的指针。

class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}

public class LinkedListDemo {
    public static void main(String[] args) {
        ListNode head = new ListNode(1);
        ListNode second = new ListNode(2);
        ListNode third = new ListNode(3);

        head.next = second;
        second.next = third;

        ListNode current = head;
        while (current != null) {
            System.out.print(current.val + " ");
            current = current.next;
        }
    }
}

3. 栈 (Stack)

栈是一种后进先出(LIFO)的数据结构。

import java.util.EmptyStackException;

public class StackDemo {
    private int maxSize;
    private int top;
    private int[] stackArray;

    public StackDemo(int size) {
        maxSize = size;
        stackArray = new int[maxSize];
        top = -1;
    }

    public void push(int value) {
        if (top == maxSize - 1) {
            System.out.println("Stack is full");
        } else {
            stackArray[++top] = value;
        }
    }

    public int pop() {
        if (top == -1) {
            throw new EmptyStackException();
        } else {
            return stackArray[top--];
        }
    }

    public int peek() {
        if (top == -1) {
            throw new EmptyStackException();
        } else {
            return stackArray[top];
        }
    }

    public boolean isEmpty() {
        return top == -1;
    }

    public static void main(String[] args) {
        StackDemo stack = new StackDemo(5);
        stack.push(1);
        stack.push(2);
        stack.push(3);
        System.out.println(stack.pop()); // 输出: 3
        System.out.println(stack.peek()); // 输出: 2
    }
}

4. 队列 (Queue)

队列是一种先进先出(FIFO)的数据结构。

import java.util.LinkedList;
import java.util.Queue;

public class QueueDemo {
    public static void main(String[] args) {
        Queue<Integer> queue = new LinkedList<>();

        queue.add(1);
        queue.add(2);
        queue.add(3);

        System.out.println(queue.poll()); // 输出: 1
        System.out.println(queue.peek()); // 输出: 2
    }
}

以上代码提供了四种线性结构的基本实现。需要注意的是,对于链表、栈和队列,Java标准库中已经提供了相应的实现类(如LinkedListArrayDequeLinkedList作为队列等),在实际开发中可以直接使用这些类,而无需自行实现。对于数组,Java也提供了内建的数组类型和操作数组的方法。

这些示例只是线性结构的基本实现,实际应用中可能需要根据具体需求进行扩展和优化。


原文地址:https://blog.csdn.net/weixin_43784341/article/details/136802972

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!