您的位置:

了解C++的数据结构和算法实现

一、什么是数据结构和算法

在计算机科学中,数据结构是硬件和软件组合在一起,用于组织和存储数据的方式。算法则是指解决问题的一系列清晰指令集合,也常被称为逻辑或过程。数据结构和算法是计算机科学的基础,几乎在所有领域都有应用。

数据结构可分为线性数据结构和非线性数据结构,线性数据结构包括数组、链表、栈和队列等,非线性数据结构包括树和图等。算法方面则可分为查找算法、排序算法和字符串匹配算法等。

二、常见的数据结构实现

在C++中,常见的数据结构实现方式有数组,链表和树等。

1、数组

#include <iostream>
#include <array>
using namespace std;

void printArray(array<int, 5> arr) {
    for (int i = 0; i < arr.size(); i++) {
        cout << arr[i] << " ";
    }
    cout << endl;
}

int main() {
    array<int, 5> arr = {1, 2, 3, 4, 5};
    printArray(arr);

    arr.fill(0); // 将数组所有元素赋值为0
    printArray(arr);

    arr.swap(array<int, 5> {5, 4, 3, 2, 1}); // 交换数组的元素
    printArray(arr);

    return 0;
}

上述代码实现了一个数组的创建,遍历和修改操作。

2、链表

#include <iostream>
using namespace std;

class Node {
public:
    int val;
    Node *next;

    Node(int data) {
        val = data;
        next = nullptr;
    }
};

void printLinkedList(Node *head) {
    Node *p = head;
    while (p != nullptr) {
        cout << p->val << " ";
        p = p->next;
    }
    cout << endl;
}

int main() {
    Node *head = new Node(1);
    Node *node1 = new Node(2);
    Node *node2 = new Node(3);
    head->next = node1;
    node1->next = node2;
    printLinkedList(head);
    return 0;
}

上述代码实现了一个链表的创建和遍历操作。

3、树

#include <iostream>
using namespace std;

class TreeNode {
public:
    int val;
    TreeNode *left;
    TreeNode *right;

    TreeNode(int data) {
        val = data;
        left = nullptr;
        right = nullptr;
    }
};

void preorder(TreeNode *root) {
    if (root == nullptr) return;
    cout << root->val << " ";
    preorder(root->left);
    preorder(root->right);
}

void inorder(TreeNode *root) {
    if (root == nullptr) return;
    inorder(root->left);
    cout << root->val << " ";
    inorder(root->right);
}

void postorder(TreeNode *root) {
    if (root == nullptr) return;
    postorder(root->left);
    postorder(root->right);
    cout << root->val << " ";
}

int main() {
    TreeNode *root = new TreeNode(1);
    root->left = new TreeNode(2);
    root->right = new TreeNode(3);
    root->left->left = new TreeNode(4);
    root->left->right = new TreeNode(5);
    root->right->left = new TreeNode(6);
    root->right->right = new TreeNode(7);

    cout << "preorder traversal: ";
    preorder(root);
    cout << endl;

    cout << "inorder traversal: ";
    inorder(root);
    cout << endl;

    cout << "postorder traversal: ";
    postorder(root);
    cout << endl;

    return 0;
}

上述代码实现了一个二叉树的创建和三种不同的遍历方式。

三、常见的算法实现

在C++中,常见的算法实现方式有搜索,排序和字符串匹配等。

1、搜索

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    vector<int> nums = {1, 5, 3, 7, 4};
    int target = 7;
    sort(nums.begin(), nums.end()); // 搜索前需要先排序
    if (binary_search(nums.begin(), nums.end(), target)) {
        cout << "found" << endl;
    } else {
        cout << "not found" << endl;
    }
    return 0;
}

上述代码实现了一个二分查找的功能。

2、排序

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    vector<int> nums = {1, 5, 3, 7, 4};
    sort(nums.begin(), nums.end()); // 使用默认的升序排序
    for (int num : nums) {
        cout << num << " ";
    }
    cout << endl;
    return 0;
}

上述代码实现了一个排序的功能。

3、字符串匹配

#include <iostream>
#include <string>
#include <regex>
using namespace std;

int main() {
    string str = "hello, world";
    regex pattern("world"); // 定义需要匹配的字符串
    if (regex_search(str, pattern)) {
        cout << "found" << endl;
    } else {
        cout << "not found" << endl;
    }
    return 0;
}

上述代码实现了一个字符串匹配的功能。

了解C++的数据结构和算法实现

2023-05-13
Java数据结构学习笔记

2023-05-11
C++实现数据结构和算法

2023-05-13
c语言笔记讲解,c语言程序笔记

2022-11-23
用C++实现高效数据结构和算法

2023-05-13
基础c语言笔记,C语言笔记

2023-01-06
c语言知识笔记,c语言最全笔记

2023-01-04
c语言算法和数据结构关系,数据结构与算法C语言

2022-11-30
一篇c语言笔记,c语言入门笔记

2022-12-02
使用C++实现高效数据结构和算法

2023-05-13
数据结构版c语言视频教程30课时,c++数据结构视频

2022-11-27
c到c语言笔记的简单介绍

2022-11-24
数据库的笔记mysql,数据库管理系统笔记

2022-11-24
使用C++实现高效的数据结构和算法

2023-05-13
C++模板类:实现通用数据结构和算法

一、模板类的概念 模板是C++中的一种特殊的数据类型,可以将类型作为参数进行操作。模板类是使用模板创建的,提供了一种通用的数据结构和算法的实现方式。模板类的定义一般包括模板参数列表、类的定义和成员函数

2023-12-08
c到c语言笔记,cc在c语言

2022-11-27
用C++封装实现高效的数据结构和算法

2023-05-13
C++编程语言:高效实现算法和数据结构

2023-05-13
C++函数库:快速实现常见数据结构和算法

一、背景介绍 在 C++ 的程序开发中,常常需要实现各种常见的数据结构和算法。然而,这些常见的数据结构和算法实现起来并不是很简单,会消耗程序员大量的时间和精力。为应对这一挑战,现在有许多 C++ 函数

2023-12-08
C++模板元编程:实现通用算法和数据结构

2023-05-13