📅  最后修改于: 2023-12-03 15:40:01.600000             🧑  作者: Mango
在计算机科学中,数据结构是指数据元素以及它们之间的关系和操作。数据结构是程序设计的基础,能够大幅提高程序的效率和可读性。常见的数据结构包括:数组,链表,栈,队列,树,图等等。
数组是一种常见的数据结构,其中相同数据类型的元素按线性序列排列。数组具有以下特点:
数组的代码片段:
int[] arr = new int[10]; // 声明一个长度为10的整型数组
arr[0] = 1; // 将第一个元素设置为1
int x = arr[0]; // 获取第一个元素的值
链表是一种常见的数据结构,其中每个元素包含两个字段:一个是存储数据的变量,另一个是指向下一个元素的指针。链表具有以下特点:
单向链表的代码片段:
class Node {
int val;
Node next;
public Node(int val) {
this.val = val;
this.next = null;
}
}
Node head = new Node(1); // 创建链表的头节点
Node node1 = new Node(2); // 创建第一个节点
Node node2 = new Node(3); // 创建第二个节点
head.next = node1;
node1.next = node2;
// 遍历链表
Node curr = head;
while (curr != null) {
System.out.println(curr.val);
curr = curr.next;
}
栈和队列是两种重要的数据结构,它们都可以通过数组或链表实现:
栈和队列的代码片段:
// 栈的实现
class Stack {
int[] arr;
int top;
public Stack(int size) {
arr = new int[size];
top = -1;
}
public void push(int x) {
arr[++top] = x;
}
public int pop() {
return arr[top--];
}
public boolean isEmpty() {
return top == -1;
}
}
Stack st = new Stack(10);
st.push(1);
st.push(2);
st.push(3);
while (!st.isEmpty()) {
System.out.println(st.pop());
}
// 队列的实现
class Queue {
int[] arr;
int size;
int front;
int rear;
public Queue(int size) {
arr = new int[size];
this.size = size;
front = 0;
rear = 0;
}
public void enqueue(int x) {
arr[rear++] = x;
}
public int dequeue() {
return arr[front++];
}
public boolean isEmpty() {
return front == rear;
}
}
Queue q = new Queue(10);
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
while (!q.isEmpty()) {
System.out.println(q.dequeue());
}
树和图是比较复杂的数据结构,它们都可以通过链表实现:
树和图的代码片段:
// 树的实现
class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
left = null;
right = null;
}
}
TreeNode root = new TreeNode(1);
TreeNode node1 = new TreeNode(2);
TreeNode node2 = new TreeNode(3);
root.left = node1;
root.right = node2;
// 遍历树
void inorderTraversal(TreeNode root) {
if (root == null) {
return;
}
inorderTraversal(root.left);
System.out.println(root.val);
inorderTraversal(root.right);
}
inorderTraversal(root);
// 图的实现
class Graph {
int[][] adjMatrix;
public Graph(int size) {
adjMatrix = new int[size][size];
}
public void addEdge(int i, int j) {
adjMatrix[i][j] = 1;
adjMatrix[j][i] = 1;
}
}
Graph g = new Graph(4);
g.addEdge(0, 1);
g.addEdge(1, 2);
g.addEdge(2, 3);
以上介绍了常见的数据结构及其代码片段。不同的数据结构适用于不同的场景,程序员需要根据实际需求来选择合适的数据结构。