关于学数据结构前需要掌握的C知识总结(指针1)

前言:

因为数据结构这本书很多人学起来会十分的困难,数据结构也得确实很难的,因为数据结构需要很多C的知识铺垫才能够学习,其中指针和结构体在用C描述的数据结构中的作用是不可替代的,如果你不明白这些东西,在数据结构这个到处都是伪代码的书中几乎是难以前行的,所以就想总结一些学数据结构之前大家需要掌握的知识。

指针

指针: 通过地址能找到所需的变量单元,可以说地址指向该变量单元,我们将地址形象化的称之为指针。(一个变量的地址称为该变量的指针)
1.指针变量
如果有一个变量专门用来存放另一变量的地址(即指针),则称它为指针变量。
例:

int a = 19;
int* point_1;
point_1 = &a;
printf("%d,%d,%d,%d\n", a, &a,point_1,*point_1);

在这里插入图片描述
在这个简单的程序中,能够发现这四个变量的结果,a=point_1 ,&a=point_1, 这是因为变量a的地址赋给了指针变量point_1,所以如果以%d 形式输出指针变量时,它的值其实就是变量a的地址,当point_1被指向时,就是point_1 ,因为指针变量就是a的地址,所以*point_1的值其实就是a所代表的值。简单的理解,在这里指针变量就是地址,指针就是值。

那么如果指针变量没有指向任何变量,他的值又会是怎么样的呐?
如果通过程序来运行的话,你会发现行不通,编程软件会提示你变量未初始化,但是实际上,如果你没有对一个变量进行初始

  • 19
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 常见的数据结构可以改造成排序算法的有: 1. 数组:可以使用冒泡排序、选择排序、插入排序等算法。 2. 链表:可以使用插入排序、归并排序等算法。 3. 栈和队列:可以使用基数排序、桶排序等算法。 4. 树:可以使用二叉树排序、堆排序等算法。 5. 图:可以使用拓扑排序等算法。 需要注意的是,不同的数据结构适用于不同的排序算法,具体应根据实际情况选择合适的数据结构和算法。 ### 回答2: 我们已经过的数据结构中有几种可以用来改造成排序算法: 1. 数组: 数组是最基本的数据结构,可以用来存储一组元素。对于数组的排序算法,常用的有冒泡排序、插入排序和选择排序。这些算法通过比较数组中的元素,并进行交换以达到排序的目的。 2. 链表: 链表是通过指针将一组元素连接起来的数据结构。对于链表的排序算法,可以使用插入排序或者归并排序。插入排序通过从未排序部分选择一个元素,并将其插入到已排序部分的正确位置来实现排序。归并排序则通过不断拆分链表,然后将拆分后的链表有序地合并起来。 3. 栈和队列: 栈和队列都是一种特殊的数据结构,它们可以用来改造成排序算法。比如,使用两个栈可以实现快速排序算法,通过分治法将数组分成两部分,然后分别使用两个栈进行递归排序。 4. 树: 树是一种非常重要的数据结构,可以用来表示有层次关系的数据。常用的树结构有二叉树、平衡树和堆。二叉树可以通过中序遍历实现排序,平衡树如红黑树和AVL树也可以用来实现排序。而堆可以用来实现堆排序,通过构建一个二叉堆,并不断取出最大(或最小)元素,将其放入已排序部分。 总之,我们可以利用已数据结构,如数组、链表、栈、队列和树等,进行改造,实现不同的排序算法。这些算法可以根据不同的应用场景和性能要求来选择使用。 ### 回答3: 我们已经过的数据结构知识中,可以拿来改造成排序算法的有数组、链表和树等。 1. 数组:我们可以使用数组来实现一些常见的排序算法,如冒泡排序、选择排序和插入排序等。其中,冒泡排序通过比较相邻的元素并交换顺序来实现排序;选择排序则是通过选择剩余未排序部分的最小元素,并将其放到已排序部分的末尾来实现排序;插入排序则是逐个将元素插入到已排序部分的正确位置。 2. 链表:链表中的元素在内存中不必是连续的,这使得它在排序过程中具有一定的优势。我们可以使用链表来实现归并排序或快速排序等。归并排序是一种分治策略,它将链表逐步分成较小的部分,然后将这些部分合并成一个有序的整体;快速排序则是通过选择一个基准元素,将元素分成小于基准和大于基准的两部分,并再分别对这两部分进行排序。 3. 树:我们可以使用树结构中的二叉搜索树来实现排序算法。二叉搜索树是一种有序的树结构,它对于任意节点,其左子树的值小于该节点的值,右子树的值大于该节点的值。我们可以通过中序遍历二叉搜索树,将其中的元素依次输出,即可得到有序的结果。 总结来说,我们可以利用数组、链表和树等数据结构来实现各种排序算法,从而实现对元素的有序排列。不同的数据结构适用于不同的排序算法,通过灵活运用这些数据结构,我们能够高效地进行排序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值