数据结构学习笔记(每日更新)

学习教程为:【郝斌】-数据结构入门

指针

int * p;//int * 表示该p变量只能存储int类型变量的地址。如果变量a的类型是char,那么运行p = &a;就会报错

p=&i;//那么*p就表示i

int * p定义了一个形参,形参名字叫p,类型是int *

把i地址发给了p,p指向i,*p就是i,执行完i=100

a指向的元素有几个字节,那a+1指向的下一个也是几个字节

上图p里面只存放一个地址(第一个字节的 地址)

指针变量都只占四个字节,无论它指向的是几个字节的元素

无论什么类型的变量,想改他的值,发他的地址就行:(p已经是int *类型的了,要发p的地址就要用int**类型)

结构体

结构体是类的过渡,只能定义数据类型,内部不能有函数

malloc()动态分配内存

malloc只能返回第一个字节的地址,所以前面要加int *告诉编译器这个地址到底是整型的地址还是什么:

malloc动态分配内存需要手动释放内存。

模块一:线性结构

数组(连续存储)

 

上面show_arr可以写传入arr也可以写传入&arr,但是写arr的话要传入12个字节,因为arr里面有3x4个字节,而&arr就只会传入4个字节。

 

上面红框部分不应该用&pArr,因为pArr已经是struct Arr *类型的了(红框上一行定义了),如果再取地址就不是struct Arr *类型的,就不能传给黑色背景部分的pArr。

pBase是数组的首地址,pBase[i]是数组内容

链表(离散存储)

typedef用法

链表

 

插入结点

删除结点

c++ c要手动释放内存

还要在前面补函数声明:

队列

模块二:非线性结构

模块三:查找和排序

排序

冒泡排序

法1.第1位依次跟第2、3、4等等到最后一位比大小,每次把小的那个放在第1位,这样第1位最后就是最小的

法2.第1位与第2位比,大的放第2位,第2位再与第3位比,大的还是放右边,依次进行,最后最大的数在最后一位。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!关于学习数据结构的C语言笔记,我可以给你一些基本的指导和概念。数据结构是计算机科学中非常重要的一门课程,它涉及存储和组织数据的方法。C语言是一种常用的编程语言,很适合用于实现各种数据结构。 下面是一些数据结构的基本概念,你可以在学习笔记中包含它们: 1. 数组(Array):一种线性数据结构,可以存储相同类型的元素。在C语言中,数组是通过索引访问的。 2. 链表(Linked List):也是一种线性数据结构,但不需要连续的内存空间。链表由节点组成,每个节点包含数据和指向下一个节点的指针。 3. 栈(Stack):一种后进先出(LIFO)的数据结构,类似于装满物品的箱子。在C语言中,可以使用数组或链表来实现栈。 4. 队列(Queue):一种先进先出(FIFO)的数据结构,类似于排队等候的队伍。同样可以使用数组或链表来实现队列。 5. 树(Tree):一种非线性数据结构,由节点和边组成。每个节点可以有多个子节点。二叉树是一种特殊的树结构,每个节点最多有两个子节点。 6. 图(Graph):另一种非线性数据结构,由节点和边组成。图可以用来表示各种实际问题,如社交网络和地图。 这只是数据结构中的一些基本概念,还有其他更高级的数据结构,如堆、哈希表和二叉搜索树等。在学习笔记中,你可以介绍每个数据结构的定义、操作以及适合使用它们的场景。 希望这些信息对你有所帮助!如果你有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值