
数据结构(C语言版)
学习数据结构一书时的笔记,希望对你有所帮助。
九层指针
单片机与嵌入式。
如果你交给某人一个程序,你将折磨他一整天;如果你教某人如何编写程序,你将折磨他一辈子。
展开
-
单链表实现增删改查遍历打印功能
下面是一个简单的单向链表实现,包括了增加、删除、修改和查找节点的基本操作函数。请注意,这里只是一个基础实现,并没有进行复杂的错误检查和异常处理。函数中,我们创建了一个链表实例,对其进行了几个基本操作,并打印了操作后的链表状态。,它包含了增加节点到尾部、删除节点、更新节点数据和查找节点数据的功能。这个程序定义了一个链表类。原创 2024-06-09 14:44:50 · 247 阅读 · 0 评论 -
顺序表的基本操作函数—C语言(详细)
首先解释一下计算机的数数方式,他是从0开始的。有点违反常识(生活中一般从1开始数)。1.为了方便阅读程序,和程序的移植,我们先进行如下的定义。8.在顺序表中查找与给定值e相等的元素,并返回其位置。4.若顺序表为空,返回TRUE,否则返回FALSE。7.获取顺序表中第i个元素的值。10.删除顺序表第i个数据元素。9.在第i个位置插入新元素e。建立一个长度为零的空表。2.定义顺序表的结构体。是声明了一个指向结构体。原创 2023-07-22 19:39:42 · 284 阅读 · 0 评论 -
使用线性探测法解决哈希冲突并建立一个简单的哈希表-C语言
请注意,这只是一个简单的示例,实际上,哈希表的实现可能更为复杂,例如使用链表法解决冲突、动态调整哈希表大小等。线性探测法是开放地址法族中的一种具体实现方式,它的处理方式是在发生冲突时,依次探测哈希表中的下一个位置,直到找到一个空闲的位置或者哈希表已满。开放地址法是一族解决哈希冲突的方法,它的基本思想是当发生哈希冲突时,通过在哈希表中寻找其他空闲的位置来存储冲突的元素,而不是使用链表等数据结构来解决冲突。然而,由于哈希函数的映射是有限的,可能存在不同的键映射到同一个索引位置的情况,称为。原创 2023-07-21 19:43:10 · 1604 阅读 · 0 评论 -
什么是平衡二叉树?
平衡二叉树,也被称为AVL树,是一种特殊的二叉树,它的左右子树的高度差不超过1,且每个子树也都是平衡二叉树。平衡二叉树的目的是通过保持左右子树的高度平衡,提供快速的查找、插入和删除操作。为了维护平衡,平衡二叉树在插入或删除节点时会通过旋转、重新平衡等操作来调整树的结构。这种平衡的条件确保了树的高度不会过高,保持了查找、插入和删除操作的时间复杂度在对数级别,有效地提升了性能。在这个例子中,左子树和右子树的高度差为1,且每个子树也是平衡二叉树。在这个AVL树中,左子树和右子树的高度差为0,满足平衡性的条件。原创 2023-07-20 20:24:28 · 249 阅读 · 1 评论 -
什么是二叉排序树?
二叉排序树(Binary Search Tree,BST)是一种特殊的二叉树,其中每个节点的左子树中的值都小于该节点的值,而右子树中的值都大于该节点的值。以上是两个简单的二叉排序树示例,它们都满足二叉排序树的定义,即左子树中的值小于根节点,右子树中的值大于根节点。在这个树中,根节点的值为6,左子树中的所有节点值(1、3、4)都小于6,右子树中的所有节点值(7、9、10)都大于6。在这个例子中,根节点的值为9,左子树中的所有节点值(3、7、8)都小于9,右子树中的所有节点值(10、12、15)都大于9。原创 2023-07-20 20:18:46 · 650 阅读 · 0 评论 -
最短路径Floyd算法-C语言
【代码】最短路径Floyd算法-C语言。转载 2023-07-20 16:16:55 · 119 阅读 · 0 评论 -
最短路径问题-C语言
【代码】最短路径问题-C语言。转载 2023-07-20 16:00:39 · 98 阅读 · 0 评论 -
链栈。。。
【代码】链栈。。。原创 2023-07-18 19:02:04 · 53 阅读 · 0 评论 -
顺序栈代码
【代码】顺序栈代码。原创 2023-07-18 19:01:17 · 1024 阅读 · 0 评论 -
通过函数改变函数外部变量的值
当你传递参数的指针给函数时,函数可以直接修改指针所指向的变量的值,因为指针可以提供变量的内存地址。这样的修改是在原始变量上进行的,因此会影响到函数外部的变量。当你传递参数的值给函数时,函数会在栈上创建一个新的变量,并将传递的值复制到新的变量上。在C语言中,可以通过传递参数的指针给函数,或者传递参数的值给函数来实现不同的效果。这是因为函数内部操作的是复制的值,而不是原始变量本身。在上述例子中,通过传递指针给函数,我们可以修改。的值并在函数外部进行访问。的值,但在函数外部的。原创 2023-07-17 19:57:04 · 1645 阅读 · 0 评论 -
指针加1 表示什么意思
这种指针的算术运算是依据指针的类型进行的,因此在进行指针运算时要注意数据类型的大小。另外,还需要注意指针不要越界,即不要超出其所指向的内存范围。在C/C++中,指针加1表示将指针的值增加1个单位。这个单位取决于指针所指向的数据类型的大小。需要注意的是,指针的加法操作是基于指针所指向的数据类型的字节大小进行的,而不是简单的加1操作。当对指针进行加法操作时,指针的值会增加(或减少)对应数据类型的大小。例如,如果指针指向一个。类型的变量,那么执行指针加1操作后,指针的值将增加。个字节,使其指向数组的第二个元素。原创 2023-07-17 14:45:20 · 4474 阅读 · 0 评论 -
C和C++中动态分配内存和删除内存的指令malloc()和new()
当我们使用动态分配的内存完成任务后,需要显式地删除分配的内存以避免内存泄漏。请注意,动态分配的内存在使用完成后一定要手动释放,否则会导致内存泄漏。这些示例分别演示了在C和C++中如何动态分配内存,并最终通过调用。这些指令用于在运行时分配指定大小的内存块。在C和C++中,动态分配内存的指令是使用。在C++中,动态分配内存的指令是。运算符分配了一个数组,需要使用。在C中,动态分配内存的指令是。(在C++中)释放内存。在C++中,可以使用。原创 2023-07-17 11:54:15 · 945 阅读 · 0 评论 -
函数参数——指针和引用
按引用传递允许被调用的函数能够访问调用函数中的变量。C++新增的这项特性是对C语言的超越,C语言只能。引用经常被用作函数参数,使得函数中的变量名成为调用程序中的变量的别名。这种传递参数的方法称为。按值传递导致被调用函数使用调用程序的值的拷贝。当然,C语言也允许避开按值传递的限制,采用。原创 2023-07-17 11:45:18 · 81 阅读 · 0 评论 -
C语言中&没有引用功能
在C语言和C++中,原创 2023-07-14 16:29:10 · 428 阅读 · 0 评论 -
指针与结构体(->)
因此,我们可以创建一个指向指针的指针,也就是一个存储指针地址的变量。通过不断更新指向下一个节点的指针,可以在链表中沿着节点之间的连接逐个遍历,直到达到链表的末尾(即指针为NULL)为止。需要注意的是,对于链表遍历操作,需要确保在更新指针之前进行必要的判断和边界检查,以避免在访问节点时出现错误。需要注意的是,类型转换应该谨慎使用,确保数据类型的兼容性和正确性,避免出现潜在的错误。操作符能够自动进行指针解引用,以便访问所指向的结构体或联合体的成员。它是一种简化的写法,通常用于指针访问成员的操作,可以替代使用。原创 2023-07-14 15:15:36 · 2024 阅读 · 0 评论 -
单链表(c、c++)——图书管理程序
上期写了顺序表的图书管理系统,但是顺序表存储空间连续,需要提前分配内存,可能造成内存的浪费或者内存不够的现象,所以今天介绍采用链表编写。版数据结构一书)版本和C语言版本两个代码。原创 2023-07-14 14:03:03 · 2130 阅读 · 2 评论 -
双层指针的例子
通过使用双层指针,我们可以在函数内部修改原始指针的值。总结起来,由于需要在函数内修改原始指针的值,所以使用了双层指针。所指向的指针变量指向了分配的内存。和一个指向该结构体类型的指针类型。这一行代码定义了一个结构体类型。进行解引用操作,访问其指向的。解引用操作,可以访问并修改。动态分配内存空间,使得。内部存储的地址对应的值。在函数的实现中,使用。原创 2023-07-13 19:43:09 · 110 阅读 · 0 评论 -
C语言和数据结构
在C语言中,可以为一个结构体定义多个别名。int x;int y;Point p1;// 使用别名Point代替结构体类型 p1 . x = 5;// 使用别名Coordinate代替结构体类型 p2 . x = 3;p2 . y = 7;return 0;原创 2023-07-13 19:33:12 · 172 阅读 · 0 评论 -
顺序表实践——图书管理(C++和C)
使用顺序表编写的一个图书管理机构,严薇敏《数据结构》一书提供的C++代码,我下面附上C代码。原创 2023-07-13 17:22:03 · 568 阅读 · 0 评论 -
++a和a++的区别
的主要区别在于递增操作的执行顺序。前者是先递增再进行其他操作,后者是先进行其他操作再递增。对于单独使用这两个递增操作的结果不会有太大的区别,但在复杂的表达式中,它们的顺序可能会对结果产生影响。因此,在编写代码时需要根据具体的需求选择适当的递增操作。的值加1,然后表达式的结果就是增加后的值。换句话说,先递增再进行其他操作。的操作符,但它们在执行时的顺序和结果存在一些区别。换句话说,先进行其他操作再递增。原创 2023-07-12 17:09:46 · 8067 阅读 · 0 评论 -
算法的时间复杂度之常量阶O(1)
的值是多少,循环都只会执行100次。因此,这个循环的时间复杂度是常量阶的,记作 O(1)。在对比两个循环的时间复杂度时,我们需要考虑循环中的迭代次数与问题规模。总结:两个循环的时间复杂度不同,主要是因为它们的迭代次数与问题规模。的影响,时间复杂度是常量阶的 O(1);这个循环的时间复杂度是线性阶的,记作 O(n)。这个循环是一个固定的循环,只会执行100次迭代。第一个循环的迭代次数是固定的,不受。因此,循环的迭代次数与问题规模。成正比,时间复杂度是线性阶的 O(n)。这个循环的迭代次数与。原创 2023-07-12 15:31:13 · 378 阅读 · 0 评论 -
数据结构之逻辑结构和存储结构
给数据类型指定一个名称,以便在代码中标识和引用它。原创 2023-07-12 14:12:15 · 996 阅读 · 0 评论 -
4类基本的数据结构
集合:结构中的数组元素之间除了“在同一个集合”这个关系之外,没有其他的关系了;线性结构:数据元素之间存在着一个对一个的关系;树形结构:数据元素之间存在着一个对多个的关系;图状结构:数据元素之间存在着多个对多个的关系。原创 2023-07-11 19:48:43 · 110 阅读 · 0 评论 -
数据结构大概学什么?
在编程中,数据结构是指组织和存储数据的方式,它定义了数据的组成和关系,以便在程序中进行操作和处理。常见的数据结构包括数组、链表、栈、队列、树和图等。通过选择适当的数据结构,可以提高程序的效率和性能。原创 2023-07-11 19:37:12 · 313 阅读 · 0 评论