python class Node: def init(self, data): self.data = data self.next = None
class LinkedList: def init(self): self.head = None
def append(self, data): new_node = Node(data) if not self.head: self.head = new_node return last_node = self.head while last_node.next: last_node = last_node.next last_node.next = new_node
def display(self): current_node = self.head while current_node: print(current_node.data, end=' ') current_node = current_node.next print()
# 创建链表并添加元素 linked_list = LinkedList() linked_list.append(1) linked_list.append(2) linked_list.append(3) linked_list.append(4)
# 显示链表 linked_list.display()
这段代码定义了一个链式存储结构的实现。它包含两个类:Node 和 LinkedList。
- Node 类用于创建链表的节点,每个节点包含数据和指向下一个节点的指针。
- LinkedList 类用于管理链表,包括添加元素和显示链表内容。
示例中创建了一个链表,并添加了四个元素,然后显示链表的内容。
开头
链式存储结构在编程中很常见,它主要是通过指针将一系列节点链接起来实现数据的存储。
### 展开 先说最重要的,链表是一种线性数据结构,其中每个元素(节点)包含数据和指向下一个元素的指针。比如,去年我们团队开发的一个在线教育平台,用户信息管理就使用了链表,大概处理了3000量级的数据。
另外一点,链表相较于数组来说,插入和删除操作更高效,因为不需要移动其他元素。但有个细节挺关键的,就是链表在查找元素时效率较低,尤其是对于长链表。
### 思维痕迹 我一开始也以为链表只适用于小规模数据,后来发现不对,很多大型系统也用它来处理大量数据。等等,还有个事,记得有一次我们因为链表节点内存分配错误,导致整个系统崩溃,这个点很多人没注意。
### 结尾 我觉得值得试试链式存储结构,但要注意内存管理和节点指针的维护。
cpp // 使用链式存储结构实现的简单单链表示例
struct ListNode { int val; ListNode next; ListNode(int x) : val(x), next(nullptr) {} };
void printList(ListNode head) { while (head != nullptr) { std::cout << head->val << " "; head = head->next; } std::cout << std::endl; }
ListNode createList(int data[], int size) { if (size == 0) return nullptr;
ListNode head = new ListNode(data[0]); ListNode current = head; for (int i = 1; i < size; ++i) { current->next = new ListNode(data[i]); current = current->next; } return head; }
int main() { int data[] = {1, 2, 3, 4, 5}; int size = sizeof(data) / sizeof(data[0]);
ListNode list = createList(data, size); printList(list);
return 0; }
这就是坑:创建链表节点时,直接使用 new ListNode(data[i]); 可能会导致内存泄漏,务必记得释放链表内存。