首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【数据结构】数组和字符串(八):稀疏矩阵的链接存储:十字链表的创建、插入元素、遍历打印(按行、按列、打印矩阵)、销毁

4.2.1 矩阵的数组表示 【数据结构】数组和字符串(一):矩阵的数组表示 4.2.2 特殊矩阵的压缩存储   矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。...对角矩阵的压缩存储 【数据结构】数组和字符串(二):特殊矩阵的压缩存储:对角矩阵——一维数组 b~c....稀疏矩阵的压缩存储——三元组表 【数据结构】数组和字符串(四):特殊矩阵的压缩存储:稀疏矩阵——三元组表 4.2.3三元组表的转置、加法、乘法、操作 【数据结构】数组和字符串(七):特殊矩阵的压缩存储:...稀疏矩阵是指大部分元素为零的矩阵,而十字链表可以有效地存储和操作这种类型的矩阵。在稀疏矩阵的十字链表中,每个非零元素都由一个节点表示。...关于循环链表: 【数据结构】线性表(三)循环链表的各种操作(创建、插入、查找、删除、修改、遍历打印、释放内存空间) 在稀疏矩阵的十字链表中,每一行和每一列都有一个表头节点。

24310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    2.1 C++ STL 数组向量容器

    2.1 数组向量基础应用如下C++代码,展示了如何使用STL的vector容器对数组进行元素添加、弹出、大小重置和空间调整等操作,并使用自定义函数MyPrint()输出结果。...C++代码,展示了如何使用vector容器对字符串数组进行插入和删除操作,并使用循环遍历输出结果。...在代码中,首先定义了一个vector容器str_array,该容器存放的是字符串类型的元素,使用了初始化列表给其赋予了初始值:admin、guest和lyshark。...代码在v3中使用assign()函数生成10个元素为20的向量容器,并使用MyPrintVector()打印出v3中的元素。...在代码中,定义了vector类型的变量int_array,并使用花括号列表初始化的方式插入了10个整数元素。

    20230

    2.1 C++ STL 数组向量容器

    2.1 数组向量基础应用 如下C++代码,展示了如何使用STL的vector容器对数组进行元素添加、弹出、大小重置和空间调整等操作,并使用自定义函数MyPrint()输出结果。...如下C++代码,展示了如何使用vector容器对字符串数组进行插入和删除操作,并使用循环遍历输出结果。...在代码中,首先定义了一个vector容器str_array,该容器存放的是字符串类型的元素,使用了初始化列表给其赋予了初始值:admin、guest和lyshark。...代码在v3中使用assign()函数生成10个元素为20的向量容器,并使用MyPrintVector()打印出v3中的元素。...在代码中,定义了vector类型的变量int_array,并使用花括号列表初始化的方式插入了10个整数元素。

    19920

    【C++】STL 容器 - vector 动态数组容器 ⑧ ( vector 容器添加 删除元素 | clear 函数 | insert 函数 | erase 函数 )

    pos ); 该 erase() 函数 接受一个指向要删除的元素的常量迭代器作为参数 , 返回一个指向被删除元素之后元素的迭代器 ; 注意 : 返回的是 新的迭代器 , 需要重新使用变量接收该迭代器..., 返回一个指向被删除元素范围的结束位置之后的迭代器 ; 注意 : 返回的是 新的迭代器 , 需要重新使用变量接收该迭代器 , 之前的 迭代器 指向的仍然是被删除的元素 , 如果使用之前的迭代器获取数据...: 返回的是 新的迭代器 , 需要重新使用变量接收该迭代器 , 之前的 迭代器 指向的仍然是被删除的元素 , 如果使用之前的迭代器获取数据 , 程序会崩溃 ; 代码示例 : #include "iostream..., 需要重新使用变量接收该迭代器 , 之前的 迭代器 指向的仍然是被删除的元素 , 如果使用之前的迭代器获取数据 , 程序会崩溃 ; 代码示例 : #include "iostream" using...first, InputIt last ); 注意 : 返回的是 新的迭代器 , 需要重新使用变量接收该迭代器 , 之前的 迭代器 指向的仍然是被删除的元素 , 如果使用之前的迭代器获取数据 , 程序会崩溃

    4.6K11

    【Rust学习】19_常见集合_HashMap

    前言我们最后一个常见的集合是哈希映射。类型HashMap使用哈希函数存储类型K的键到类型V的值的映射,这决定了它如何将这些键和值放入内存中。...内容当你想通过使用键(可以是任何类型)而不是使用索引(如向量中所做的那样)来查找数据时,哈希映射是很有用的。...就像向量一样,HashMap将它们的数据存储在堆上。这个HashMap有String类型的键和i32类型的值。像向量一样,哈希映射是同质的:所有的键必须具有相同的类型,所有的值也必须具有相同的类型。...我们无法使用变量 field_name 和 field_value 在通过调用 insert 将其移动到哈希映射中后。如果我们向哈希映射中插入对值的引用,这些值不会被移动到哈希映射中。...以下是您现在应该准备好解决的一些练习:给定一个整数列表,使用一个向量并返回列表的中位数(排序时,中间位置的值)和众数(最常出现的值;哈希映射在这里会有所帮助)。将字符串转换为 pig 拉丁语。

    7410

    C++17 在业务代码中最好用的十个特性

    try_emplace 在向std::map/unordered_map中插入元素时,我们往往使用emplace,emplace的操作是如果元素 key 不存在,则插入该元素,否则不插入。...但是在元素已存在时,emplace仍会构造一次待插入的元素,在判断不需要插入后,立即将该元素析构,因此进行了一次多余构造和析构操作。c++17 加入了try_emplace,避免了这个问题。...是一个可以存储任何可拷贝类型的容器,C 语言中通常使用void*实现类似的功能,与void*相比,std::any具有两点优势: std::any更安全:在类型 T 被转换成void*时,T 的类型信息就已经丢失了...只有当对类型完全未知的情况下,才应当使用std::any,比如动态类型文本的解析或者业务逻辑的中间层信息传递。...总结一下,c++17 新增的三种类型给 c++带来了更现代更安全的类型系统,它们对应的使用场景是: std::any适用于之前使用void*作为通用类型的场景。

    2.7K20

    c++17好用的新特性总结

    ::map/unordered_map try_emplace  在向std::map/unordered_map中插入元素时,我们往往使用emplace,emplace的操作是如果元素key不存在,则插入该元素...但是在元素已存在时,emplace仍会构造一次待插入的元素,在判断不需要插入后,立即将该元素析构,因此进行了一次多余构造和析构操作。c++17加入了try_emplace,避免了这个问题。...std::any std::any是一个可以存储任何可拷贝类型的容器,C语言中通常使用void*实现类似的功能,与void*相比,std::any具有两点优势: std::any更安全:在类型T被转换成...只有当对类型完全未知的情况下,才应当使用std::any,比如动态类型文本的解析或者业务逻辑的中间层信息传递。...总结一下,c++17新增的三种类型给c++带来了更现代更安全的类型系统,它们对应的使用场景是: std::any适用于之前使用void*作为通用类型的场景。

    3.4K10

    【C++】STL 算法 ② ( foreach 循环中传入 函数对象 Lambda 表达式处理元素 | foreach 循环算法 | Lambda 表达式 - 匿名 函数对象 仿函数 )

    , std::foreach 循环 虽然 不是标准库的一部分 , 但是 C ++ 编译器 提供了对 该语法 的支持作为扩展 ; 使用 该 std::foreach 循环 , 可以用于 遍历 STL 标准模板库...上述 迭代器 范围 是一个 前闭后开 区间 ; 2、foreach 循环中传入 函数对象 处理元素 使用 foreach 循环遍历 STL 容器 中的元素时 , 可以对 被遍历的 元素 使用 函数对象.../ 仿函数 在上面的代码中 , 使用了 Lambda 表达式 , 如下所示 : // 向 foreach 循环中传入 Lambda 表达式 // 在函数对象中打印元素内容 for_each(vec.begin...捕获所有外部变量 ; [this] : 捕获当前类的 this 指针 ; 上述 foreach 循环中 , 没有捕获外部的变量 , 传入了 int 类型的参数 , 在函数体内打印了 int 类型参数...; 这个 int 类型的参数就是 STL 容器中的值 ; [](int num) { std::cout << num << endl; }

    45310

    vector

    本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。...但是无论如何,重新分配都应该是对数增长的间隔大小,以至于在末尾插入一个元素的时候是在常数时间的复杂度完成的。 5...._size; size_t _capacity; }; 成员变量: T* _a; :一个指向元素存储空间的指针,动态分配内存。...这里展示了三种不同的字符串添加方式。 修改 vector 中的元素 v2[1] += "来"; vector 提供了对元素的随机访问功能,可以通过下标轻松访问和修改。...当向向量中添加元素时,如果向量容量不足,它会自动分配更大的内存空间。

    10610

    【C++】STL 容器 - deque 双端数组容器 ( deque 容器与 vector 容器区别 | 容器头部插入 删除元素 | 查询元素索引位置 | algorithm#find 函数 )

    ) 1、deque 容器头部插入元素 - push_front 函数 2、deque 容器头部删除元素 - pop_front 函数 三、 查询 deque 容器中指定元素的索引位置 1、使用 algorithm...( 仅展示与 vector 容器的不同操作 ) 1、deque 容器头部插入元素 - push_front 函数 调用 std::deque 容器的 push_front() 函数 可以在容器的头部插入一个元素..."iostream" using namespace std; #include "deque" // 打印 deque 类型的 STL 容器 void printV(deque...容器头部插入 888 元素 deq.push_front(888); // 打印 deque 容器中的元素 printV(deq); // 控制台暂停 , 按任意键继续向后执行...int main() { // 创建空的 deque 容器 std::deque deq{ 1, 2, 3, 4, 5 }; // 打印 deque 容器中的元素

    44410

    Rust入坑指南:鳞次栉比

    insert可以指定插入的位置,而push只能在字符串末尾插入。 使用「+」连接字符串时,第一个参数是String类型,第二个则需要是引用类型&str。...[1, 2, 3]; } 上面这段代码演示了创建一个向量的两种方式,第一种是使用new函数来创建一个空的向量,由于没有添加元素,所以要显式的指定存储元素的类型。...第二种是创建一个有初始值的向量集合,我们直接使用vec!宏,然后指定初始值即可,不需要指定向量中元素的数据类型,因为编译器可以自己推断出来。...此外,还可以通过遍历向量的形式来读取元素。如果想要存储不同类型的数据,我们可以借助枚举类型。...由于HashMap是三种集合类型中使用最少的,所以在使用之前,需要手动引入进来 use std::collections::HashMap; 创建HashMap 首先我们来了解一下如何创建一个新的Hash

    74710

    2W五千字的C++基础知识整理汇总

    cout 是与流插入运算符 使用的,如下所示: 实例 #include using namespace std; int main( ) { char str...类型(整型、浮点型、double 型、字符串和指针)的数据项。 流插入运算符 使用,如上面实例中所示,endl 用于在行末添加一个换行符。...不同数据类型的指针之间唯一的不同是,指针所指向的变量或常量的数据类型不同。 C++ 中使用指针 使用指针时会频繁进行以下几个操作:定义一个指针变量、把变量地址赋值给指针、访问指针变量中可用地址的值。...您可以使用模板来定义函数和类,接下来让我们一起来看看如何使用。...,有几点要注意: push_back( ) 成员函数在向量的末尾插入值,如果有必要会扩展向量的大小。

    2.6K10

    一文让你学完C++,干货收藏!!!

    cout 是与流插入运算符 使用的,如下所示: 实例 #include using namespace std; int main( ) { char str[] =...类型(整型、浮点型、double 型、字符串和指针)的数据项。 流插入运算符 使用,如上面实例中所示,endl 用于在行末添加一个换行符。...不同数据类型的指针之间唯一的不同是,指针所指向的变量或常量的数据类型不同。 C++ 中使用指针 使用指针时会频繁进行以下几个操作:定义一个指针变量、把变量地址赋值给指针、访问指针变量中可用地址的值。...您可以使用模板来定义函数和类,接下来让我们一起来看看如何使用。...,有几点要注意: push_back( ) 成员函数在向量的末尾插入值,如果有必要会扩展向量的大小。

    3K3029

    一文让你学完C++,干货收藏!!!

    cout 是与流插入运算符 使用的,如下所示: 实例 #include using namespace std; int main( ){ char str[] =...类型(整型、浮点型、double 型、字符串和指针)的数据项。 流插入运算符 使用,如上面实例中所示,endl 用于在行末添加一个换行符。...不同数据类型的指针之间唯一的不同是,指针所指向的变量或常量的数据类型不同。 C++ 中使用指针 使用指针时会频繁进行以下几个操作:定义一个指针变量、把变量地址赋值给指针、访问指针变量中可用地址的值。...您可以使用模板来定义函数和类,接下来让我们一起来看看如何使用。...,有几点要注意: push_back( ) 成员函数在向量的末尾插入值,如果有必要会扩展向量的大小。

    2.3K20

    一文让你学完C++,干货收藏!!!

    cout 是与流插入运算符 使用的,如下所示: 实例 #include using namespace std; int main( ) { char str...类型(整型、浮点型、double 型、字符串和指针)的数据项。 流插入运算符 使用,如上面实例中所示,endl 用于在行末添加一个换行符。...不同数据类型的指针之间唯一的不同是,指针所指向的变量或常量的数据类型不同。 C++ 中使用指针 使用指针时会频繁进行以下几个操作:定义一个指针变量、把变量地址赋值给指针、访问指针变量中可用地址的值。...您可以使用模板来定义函数和类,接下来让我们一起来看看如何使用。...,有几点要注意: push_back( ) 成员函数在向量的末尾插入值,如果有必要会扩展向量的大小。

    3.4K20

    C++奇迹之旅:vector使用方法以及操作技巧

    T:向量中存储的元素的类型。...就像数组一样,向量对其元素使用连续的存储位置,这意味着也可以使用指向其元素的常规指针上的偏移量来访问其元素,并且与数组中的元素一样高效。...库可以实施不同的增长策略,以平衡内存使用和重新分配之间的平衡,但无论如何,重新分配应该只在大小的对数增长间隔下发生,以便在向量末尾插入单个元素时可以提供摊销的恒定时间复杂度(参见push_back)。...}; // 在删除最后一个元素之前打印向量的内容 std::cout 向量的内容: "; for (int i : v) { std::cout << i << " "; } std...::cout std::endl; // 删除向量的最后一个元素 v.pop_back(); // 在删除最后一个元素之后打印向量的内容 std::cout 向量的内容: ";

    9000
    领券