数据结构与算法之数据结构 核心分类 线性 / 非线性 / 集合结构 体系解析

数据结构与算法阿木 发布于 2025-07-11 7 次阅读


摘要:数据结构是计算机科学中一个重要的基础概念,它描述了数据在计算机中的存储、组织与操作方式。本文将围绕数据结构的核心分类体系,即线性结构、非线性结构和集合结构,进行深入解析,探讨各类数据结构的特点、应用场景以及相关代码实现。

一、

数据结构是计算机科学中研究数据存储、组织与操作的一门学科。合理的数据结构可以提高程序的性能,降低时间复杂度和空间复杂度。本文将从线性结构、非线性结构和集合结构三个方面对数据结构进行解析。

二、线性结构

线性结构是一种数据元素之间存在着一对一的线性关系的数据结构。常见的线性结构有:数组、链表、栈、队列等。

1. 数组

数组是一种基本的数据结构,它使用连续的内存空间来存储数据元素。数组的特点是随机访问,即可以通过索引直接访问任意位置的元素。

python

数组实现


def array_create(size):


return [None] size

def array_get(array, index):


return array[index]

def array_set(array, index, value):


array[index] = value

示例


array = array_create(5)


array_set(array, 0, 1)


array_set(array, 1, 2)


array_set(array, 2, 3)


array_set(array, 3, 4)


array_set(array, 4, 5)

print(array_get(array, 2)) 输出:3


2. 链表

链表是一种由节点组成的线性结构,每个节点包含数据和指向下一个节点的指针。链表的特点是插入和删除操作方便,但随机访问效率较低。

python

链表实现


class Node:


def __init__(self, data):


self.data = data


self.next = None

def linked_list_create():


return Node(None)

def linked_list_insert(head, data):


new_node = Node(data)


new_node.next = head


return new_node

def linked_list_get(head, index):


current = head


for _ in range(index):


if current is None:


return None


current = current.next


return current.data

示例


head = linked_list_create()


head = linked_list_insert(head, 5)


head = linked_list_insert(head, 4)


head = linked_list_insert(head, 3)


head = linked_list_insert(head, 2)


head = linked_list_insert(head, 1)

print(linked_list_get(head, 2)) 输出:3


3. 栈

栈是一种后进先出(LIFO)的线性结构。常见的操作有:push(入栈)、pop(出栈)和peek(查看栈顶元素)。

python

栈实现


class Stack:


def __init__(self):


self.items = []

def push(self, item):


self.items.append(item)

def pop(self):


return self.items.pop()

def peek(self):


return self.items[-1]

def is_empty(self):


return len(self.items) == 0

示例


stack = Stack()


stack.push(1)


stack.push(2)


stack.push(3)

print(stack.pop()) 输出:3


print(stack.peek()) 输出:2


4. 队列

队列是一种先进先出(FIFO)的线性结构。常见的操作有:enqueue(入队)、dequeue(出队)和peek(查看队首元素)。

python

队列实现


class Queue:


def __init__(self):


self.items = []

def enqueue(self, item):


self.items.append(item)

def dequeue(self):


return self.items.pop(0)

def peek(self):


return self.items[0]

def is_empty(self):


return len(self.items) == 0

示例


queue = Queue()


queue.enqueue(1)


queue.enqueue(2)


queue.enqueue(3)

print(queue.dequeue()) 输出:1


print(queue.peek()) 输出:2


三、非线性结构

非线性结构是一种数据元素之间不存在一对一的线性关系的数据结构。常见的非线性结构有:树、图等。

1. 树

树是一种层次结构,由节点组成,每个节点有零个或多个子节点。常见的树有:二叉树、二叉搜索树等。

python

二叉树实现


class TreeNode:


def __init__(self, data):


self.data = data


self.left = None


self.right = None

def binary_tree_insert(root, data):


if root is None:


return TreeNode(data)


if data < root.data:


root.left = binary_tree_insert(root.left, data)


else:


root.right = binary_tree_insert(root.right, data)


return root

def binary_tree_search(root, data):


if root is None or root.data == data:


return root


if data < root.data:


return binary_tree_search(root.left, data)


return binary_tree_search(root.right, data)

示例


root = None


root = binary_tree_insert(root, 5)


root = binary_tree_insert(root, 3)


root = binary_tree_insert(root, 7)


root = binary_tree_insert(root, 2)


root = binary_tree_insert(root, 4)


root = binary_tree_insert(root, 6)


root = binary_tree_insert(root, 8)

search_result = binary_tree_search(root, 4)


if search_result:


print(search_result.data) 输出:4


2. 图

图是一种由节点和边组成的数据结构,节点表示实体,边表示实体之间的关系。常见的图有:无向图、有向图、加权图等。

python

图实现


class Graph:


def __init__(self):


self.vertices = {}

def add_vertex(self, vertex):


self.vertices[vertex] = []

def add_edge(self, vertex1, vertex2):


self.vertices[vertex1].append(vertex2)


self.vertices[vertex2].append(vertex1)

def get_neighbors(self, vertex):


return self.vertices[vertex]

示例


graph = Graph()


graph.add_vertex(1)


graph.add_vertex(2)


graph.add_vertex(3)


graph.add_vertex(4)


graph.add_edge(1, 2)


graph.add_edge(1, 3)


graph.add_edge(2, 4)


graph.add_edge(3, 4)

print(graph.get_neighbors(1)) 输出:[2, 3]


四、集合结构

集合结构是一种元素无序、不重复的数据结构。常见的集合结构有:集合、字典、集合类等。

1. 集合

集合是一种无序、不重复的数据结构。常见的操作有:add(添加元素)、remove(删除元素)和contains(判断元素是否存在)。

python

集合实现


class Set:


def __init__(self):


self.items = set()

def add(self, item):


self.items.add(item)

def remove(self, item):


self.items.discard(item)

def contains(self, item):


return item in self.items

示例


set = Set()


set.add(1)


set.add(2)


set.add(3)

print(set.contains(2)) 输出:True


set.remove(2)

print(set.contains(2)) 输出:False


2. 字典

字典是一种键值对的数据结构,其中键是唯一的,值可以重复。常见的操作有:get(获取值)、set(设置值)和contains_key(判断键是否存在)。

python

字典实现


class Dictionary:


def __init__(self):


self.items = {}

def get(self, key):


return self.items.get(key)

def set(self, key, value):


self.items[key] = value

def contains_key(self, key):


return key in self.items

示例


dictionary = Dictionary()


dictionary.set(1, 'a')


dictionary.set(2, 'b')


dictionary.set(3, 'c')

print(dictionary.get(2)) 输出:b


print(dictionary.contains_key(2)) 输出:True


五、总结

本文对数据结构的核心分类体系进行了解析,包括线性结构、非线性结构和集合结构。通过对各类数据结构的特点、应用场景以及相关代码实现的分析,有助于读者更好地理解和应用数据结构。在实际编程过程中,选择合适的数据结构可以提高程序的性能和可维护性。