C/C++
文章平均质量分 81
C/C++, cpp
Suhan42
来csdn只办三件事:开源!开源!还是***开源!
展开
-
【数据结构】汇总二、线性表(逻辑结构、物理(存储)结构、基本操作、1.顺序表2.单链表3.双链表4.循环链表5.静态链表6.顺序表与链表的对比不同)
10//静态链表的最大长度//静态链表结构类型的定义,并且使用typedef进行重命名为SLinkList[MaxSize]//存储数据元素int next;//下一个元素的数组下标//数组a作为静态链表//等同于链表定义形式,这样可以使用StackLink来创建静态链表的节点,使用来创建指向静态链表节点的指针。//数据域int cur;//游标//例如,可以使用以下方式创建一个静态链表节点:p = &node;原创 2024-03-07 15:37:21 · 1080 阅读 · 0 评论 -
【数据结构】二、线性表:6.顺序表和链表的对比不同(从数据结构三要素讨论:逻辑结构、物理结构(存储结构)、数据运算(基本操作))
若分配空间过大,则浪费内存资源。若元素占用空间很大,那么移动元素花费的时间要比查找元素花费是时间代价更大。只需分配一个头结点(也可以不要头结点,只声明一个头指针),之后方便拓展。按位查找:由于单链表每个节点只存储了指向下一个节点的指针,只能。按位查找:使用顺序存储,每个数据元素大小相同,所以可以。,即可以在**O(1)**时间内找到第i个元素。插入/删除元素要将后续元素都后移/前移。时间复杂度O(n),时间开销主要来自。时间复杂度O(n),时间开销主要来自。,不可随机存储,所以访问节点时。原创 2024-03-06 20:27:45 · 470 阅读 · 0 评论 -
【数据结构】二、线性表:5.静态链表的定义及其基本操作(定义、初始化、插入、查找、删除、遍历、长度、特点)
10//静态链表的最大长度//静态链表结构类型的定义,并且使用typedef进行重命名为SLinkList[MaxSize]//存储数据元素int next;//下一个元素的数组下标//数组a作为静态链表//等同于链表定义形式,这样可以使用StackLink来创建静态链表的节点,使用来创建指向静态链表节点的指针。//数据域int cur;//游标//例如,可以使用以下方式创建一个静态链表节点:p = &node;原创 2024-03-06 20:23:58 · 985 阅读 · 0 评论 -
【数据结构】二、线性表:4.循环链表的定义及其基本操作(循环单链表,循环双链表的初始化、判空、判断头结点、尾结点、插入、删除)
循环双链表(Circular Doubly Linked List)是一种特殊类型的双向链表,其中最后一个节点的下一个指针指向头节点,头节点的前一个指针指向最后一个节点,形成一个循环。循环单链表与普通单链表的主要区别在于,循环单链表的尾节点的指针不是指向 nullptr,而是指向头节点,形成一个闭环。这意味着,在循环单链表中,可以通过尾节点的指针重新回到头节点。循环单链表(Circular Singly Linked List)是一种特殊类型的单链表,其中最后一个节点的指针指向头节点,形成一个循环。原创 2024-03-05 16:24:29 · 1241 阅读 · 0 评论 -
【数据结构】二、线性表:3.双链表的定义及其基本操作(初始化、头插法尾插法建表、插入、遍历查找、删除、判空等)
对于只需要顺序遍历或仅从头部开始操作的情况,单链表可能是更简洁和高效的选择。但对于需要在两个方向上遍历或在任意位置插入或删除节点的情况,双链表就更有优势了。单链表(Singly Linked List)和双链表(Doubly Linked List)是两种常见的链表数据结构,它们在节点之间的连接方式上有所区别。双链表不可随机存取,按位查找、按值查找操作都只能用遍历的方式实现,时间复杂度为。注意:要注意代码中结点前驱后继的调整顺序,防止出现自己指向自己的情况。双链表与单链表一样,为了操作方便也可以加入。原创 2024-03-04 20:48:58 · 854 阅读 · 0 评论 -
【数据结构】二、线性表:2.单链表的建立(尾插法实例、头插法)
当插入1个元素时,while需要循环一次,插入2个元素,while循环1此…插入n个元素,while循环n-1次。通过将用户输入的数据逐个添加到链表的尾部,可以方便地保存输入的数据,并在后续处理中使用。头插法建立单链表的特点是:新节点插入到链表的头部位置,因此建立完成的链表元素顺序是和输入数据集合的顺序相反的,即。),指向表尾,当要在尾部插入一个新的数据元素时,就只需要对r结点做一个后插操作就行了。如果要把很多个数据元素存到一个单链表中,如何操作?这种操作,时间复杂度太大,并不是最佳方案。原创 2024-03-04 19:13:38 · 473 阅读 · 0 评论 -
【数据结构】二、线性表:2.单链表的插入、删除、查找
单链表按位查找是指根据节点在链表中的位置(即节点序号或下标)来查找节点的操作。通常情况下,我们需要查找的节点序号是从1开始计数的,即第1个节点、第2个节点、第3个节点等。由于需删除结点的前驱结点未知,或者要删除的是第一个结点,且不带头结点。ListDelete(&L,i,&e):删除操作。删除表L中第i个位置的元素,并用e返回删除元素的值。ListInsert(&L,i,e):插入操作。LocateElem(L,e):按值查找操作。转移p结点的内容到后面,在逻辑上实现在p结点前插入。时间复杂度:O(1)原创 2024-03-04 18:18:08 · 1317 阅读 · 0 评论 -
【数据结构】二、线性表:2.单链表的定义与实现(带头结点与不带头结点的区别)
单链表适用于需要频繁插入、删除节点的场景,但不适用于随机访问节点的场景,因为随机访问需要从头指针开始遍历整个链表。与数组不同,单链表的节点是通过指针来连接的,因此在插入、删除节点时不需要移动其他节点,只需要修改指针的指向即可,这是单链表的一个优势。不带头结点,写代码更麻烦对第一个数据结点和后续数据结点的处理需要用不同的代码逻辑对空表和非空表的处理需要用不同的代码逻辑。单链表是一种常见的线性数据结构,由一个个节点组成,每个节点包含两个部分:数据部分和指针部分。由于单链表每个节点只存储了指向下一个节点的指针,原创 2024-03-04 18:12:09 · 621 阅读 · 0 评论 -
【数据结构】二、线性表:1.顺序表的插入、删除、查找、特点
平均情况:假设新元素插入到任何一个位置的概率相同,即i=1,2,3, …,length+1的概率都是p=1/(n+1),循环n次;i=2时,循环 n-1 次;i=3,循环n-2次…i=n+1时,循环0次.平均循环次数=np+ (n-1)p+(n-2)p+…最坏情况:新元素插入到表头,需要将原有的n个元素全都向后移动。i=n+1,循环0次;最好时间复杂度 =O(1);i=1,循环n次:最坏时间复杂度=O(n);平均时间复杂度= O(n)时间复杂度:O(n)时间复杂度:O(1)时间复杂度:O(n)原创 2024-03-04 18:08:07 · 461 阅读 · 0 评论 -
【数据结构】二、线性表:1.顺序表的定义与实现(静态分配、动态分配)
顺序存储:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。那么,第二个元素就是LOC(L)+数据元素的大小;第三个元素就是LOC(L)+数据元素的大小*2。按前后顺序输出线性表L的所有元素值。返回线性表L的长度,即L中数据元素的个数。删除表L中第i个位置的元素,并用e返回删除元素的值。所以,设线性表第一个元素的存放位置是LOC(L)在表L中的第i个位置上插入指定元素e。在表L中查找具有给定关键字值的元素。获取表L中第i个位置的元素的值。原创 2024-03-04 18:04:32 · 1166 阅读 · 0 评论 -
【数据结构】一、数据结构的基本概念
**数据结构**是相互之间存在一种或多种特定**关系**的数据元素的集合。数据结构这门课着重关注的是数据元素之间的关系,和对这些数据元素的操作,而不关心具体的数据项内容。原创 2024-03-04 17:56:33 · 982 阅读 · 0 评论 -
c++使用stringstream与getline分割字符
stringstream可以使string与各种内置类型数据之间的转换。我们可以利用getline(),自定义字符,分割字符原创 2022-08-11 15:45:57 · 623 阅读 · 0 评论