21xrx.com
2024-11-05 18:34:19 Tuesday
登录
文章检索 我的文章 写文章
Java中数据结构的实现方法——代码案例详解
2023-06-16 16:32:55 深夜i     --     --
Java 数据结构 链表 队列

在Java中,没有像C语言那样的指针,这对于许多初学者来说可能是一个难点。然而,在Java中依然可以实现各种数据结构,例如链表、栈、队列等。这篇文章将从代码案例的角度来详细介绍Java中数据结构的实现方法。

1.链表

链表是一种线性数据结构,其每个节点都包含着指向下一个节点的指针。在Java中,可以通过定义节点类Node和链表类LinkedList来实现链表。代码案例如下:


class Node {

  int val;

  Node next;

  Node(int x) val = x;

}

class LinkedList {

  Node head;

  LinkedList()

    head = null;

  

  void add(int val) {

    Node newNode = new Node(val);

    newNode.next = head;

    head = newNode;

  }

  void print() {

    Node temp = head;

    while (temp != null) {

      System.out.print(temp.val + " ");

      temp = temp.next;

    }

  }

}

public class Main {

  public static void main(String[] args) {

    LinkedList list = new LinkedList();

    list.add(1);

    list.add(2);

    list.add(3);

    list.print();

  }

}

2.栈

栈是一种后进先出的数据结构。Java中可以通过定义数组或者链表来实现栈。代码案例如下:


import java.util.*;

class Stack {

  List list;

  Stack() {

    list = new ArrayList<>();

  }

  void push(int val) {

    list.add(val);

  }

  int pop() {

    if (list.size() == 0)

      return -1;

    

    int val = list.get(list.size()-1);

    list.remove(list.size()-1);

    return val;

  }

  int peek() {

    if (list.size() == 0)

      return -1;

    

    return list.get(list.size()-1);

  }

  boolean empty() {

    return list.size() == 0;

  }

}

public class Main {

  public static void main(String[] args) {

    Stack stack = new Stack();

    stack.push(1);

    stack.push(2);

    stack.push(3);

    System.out.println(stack.pop());

    System.out.println(stack.peek());

    System.out.println(stack.empty());

  }

}

3.队列

队列是一种先进先出的数据结构。Java中可以通过定义数组或者链表来实现队列。代码案例如下:


import java.util.*;

class Queue {

  List list;

  Queue() {

    list = new ArrayList<>();

  }

  void push(int val) {

    list.add(val);

  }

  int pop() {

    if (list.size() == 0)

      return -1;

    

    int val = list.get(0);

    list.remove(0);

    return val;

  }

  int peek() {

    if (list.size() == 0)

      return -1;

    

    return list.get(0);

  }

  boolean empty() {

    return list.size() == 0;

  }

}

public class Main {

  public static void main(String[] args) {

    Queue queue = new Queue();

    queue.push(1);

    queue.push(2);

    queue.push(3);

    System.out.println(queue.pop());

    System.out.println(queue.peek());

    System.out.println(queue.empty());

  }

}

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复