当前位置: 首页 > news >正文

C或C++中实现数据结构课程中的链表、数组、树和图

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;
}

相关文章:

  • count(1),count(列名),count(*)详解!
  • 系统思考全球化落地
  • 【DeepSeek应用】本地部署deepseek模型后,如何在vscode中调用该模型进行代码撰写,检视和优化?
  • Unity--GPT-SoVITS接入、处理GPTAPI的SSE响应流
  • 操作系统——进程优先级切换调度与调度算法
  • 【从零开始学习计算机科学】设计模式(二)工厂模式、抽象工厂模式、单例模式、建造者模型、原型模式
  • 一级运动员最小几岁·棒球1号位
  • ThinkPad T480s更换开机BIOS图片的详细步骤
  • KNN算法原理及python代码实现
  • PyTorch 实现 Conditional DCGAN(条件深度卷积生成对抗网络)进行图像到图像转换的示例代码
  • RabbitMQ可靠性进制
  • C语言每日一练——day_9
  • 【AHE数据集】 NCAR Anthropogenic Heat Flux (AHF) 数据集
  • Flask应用调试模式下外网访问的技巧
  • Day5 结构体、文字显示与GDT/IDT初始化
  • MySQL查询语句之like
  • Flask从入门到精通--初始Flask
  • 黑马node.js教程(nodejs教程)——AJAX-Day01-04.案例_地区查询——查询某个省某个城市所有地区(代码示例)
  • 五种最新优化算法(ALA、AE、DOA、GOA、OX)求解多个无人机协同路径规划(可以自定义无人机数量及起始点),MATLAB代码
  • dubbo nacos配置详解
  • 美国参议院投票通过戴维·珀杜出任美国驻华大使
  • 辽宁辽阳市白塔区一饭店发生火灾,事故已造成22人遇难3人受伤
  • 遭遇大规模停电,西班牙内政部宣布进入国家紧急状态
  • 伊朗内政部长:港口爆炸由于“疏忽”和未遵守安全规定造成
  • 外交部:欢迎外国朋友“五一”来中国
  • 报告显示2024年全球军费开支增幅达冷战后最大