1. 链表(Linked List)
单向链表(C++)----------通过指针实现动态内存管理。
#include <iostream>struct Node {int data;Node* next;
};class LinkedList {
private:Node* head;
public:LinkedList() : head(nullptr) {}void append(int data) {Node* newNode = new Node{data, nullptr};if (!head) {head = newNode;} else {Node* temp = head;while (temp->next) {temp = temp->next;}temp->next = newNode;}}void print() {Node* temp = head;while (temp) {std::cout << temp->data << " -> ";temp = temp->next;}std::cout << "nullptr" << std::endl;}~LinkedList() {Node* temp;while (head) {temp = head;head = head->next;delete temp;}}
};int main() {LinkedList list;list.append(1);list.append(2);list.append(3);list.print();return 0;
}
2. 数组(Array)
动态数组(C++)-------使用std::vector
简化动态数组操作。
#include <iostream>
#include <vector>int main() {std::vector<int> arr = {1, 2, 3, 4, 5};// 添加元素arr.push_back(6);// 遍历数组for (int i : arr) {std::cout << i << " ";}std::cout << std::endl;return 0;
}
3. 树(Tree)
二叉树(C++)-------通过递归实现二叉树的插入和遍历。
#include <iostream>struct TreeNode {int data;TreeNode* left;TreeNode* right;TreeNode(int val) : data(val), left(nullptr), right(nullptr) {}
};class BinaryTree {
private:TreeNode* root;void insert(TreeNode*& node, int data) {if (!node) {node = new TreeNode(data);} else if (data < node->data) {insert(node->left, data);} else {insert(node->right, data);}}void inorder(TreeNode* node) {if (node) {inorder(node->left);std::cout << node->data << " ";inorder(node->right);}}public:BinaryTree() : root(nullptr) {}void insert(int data) {insert(root, data);}void printInorder() {inorder(root);std::cout << std::endl;}
};int main() {BinaryTree tree;tree.insert(5);tree.insert(3);tree.insert(7);tree.insert(2);tree.insert(4);tree.printInorder();return 0;
}
4. 图(Graph)
邻接表表示法(C++)-------使用邻接表表示图结构。
#include <iostream>
#include <list>class Graph {
private:int V; // 顶点数std::list<int>* adj; // 邻接表public:Graph(int V) : V(V) {adj = new std::list<int>[V];}void addEdge(int v, int w) {adj[v].push_back(w); // 添加边}void printGraph() {for (int i = 0; i < V; ++i) {std::cout << "顶点 " << i << " 的邻接点: ";for (int neighbor : adj[i]) {std::cout << neighbor << " ";}std::cout << std::endl;}}~Graph() {delete[] adj;}
};int main() {Graph g(4);g.addEdge(0, 1);g.addEdge(0, 2);g.addEdge(1, 2);g.addEdge(2, 0);g.addEdge(2, 3);g.addEdge(3, 3);g.printGraph();return 0;
}