数据结构学习Day 1

学习日记:知道了上个学期的绩点在专业里的排名,痛彻心扉,这个学期必要力挽狂澜,争取up!

c语言也没有学好啊,让我来好好复习一下。

1、return

函数是C语言的基本构件,一个C程序可以由一个主函数和若干个子程序函数构成,由主函数调用其它子程序函数,其他子程序函数也可以互相调用。通常希望通过函数调用使主函数能得到一个确定的值,这就是函数的返回值。

在函数中,如果碰到return 语句,那么程序就会返回调用该函数的下一条语句执行,也就是说跳出函数的执行,回到原来的地方继续执行下去。但是如果是在主函数中碰到return语句,那么整个程序就会停止,退出程序的执行。

大概就是说return其实就是让你的函数体有一个结果然后继续程序下面的执行?

然后还有就是返回指定类型的值,return 后面接的就是这个返回值,这个函数执行后就可以给别的变量赋值了,他的值就是return 后面的值。

return的一般形式

①return 表达式

②return(表达式);

return的语句可以有多个,可与出现在函数的任意位置,但是每次调用函数只能有一个函数被执行,也就是只能产生一个返回值。(这一个性质我不太理解哇)

return 0表示函数正常终止,return 1则表示函数异常终止。

return还有强制结束函数执行的作用   return ;

2、void

void 类型不能够用来申明变量和常量

void应用最广泛的就是跟指针结合,而void和指针的结合也大大扩展了指针的可能性

void *    
/*无类型指针,也称为空指针,可以指向任何类型的数据
*注意一点:当我们需要使用void 类型的的指针变量去指向某一类型的变量的时候,必须要对其进行类型转换
*/

void真正发挥的作用在于:(1)对函数返回的限定;(2)对函数参数的限定。

如果函数没有返回值,那么应声明为void类型

如果函数无参数,那么应声明其参数为void。

可是我有一个问题是,先有void还是先有return?return与void?

3、内存申请函数

这个函数是现在的我能理解的吗???

int *p_int;
p_int = (int *)malloc(sizeof(int));
 

4、数据结构的理解

数据结构,就是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。记为:Data_Structure=(D,R)
其中D是数据元素的集合,R是该集合中所有元素之间的关系的有限集合。

5、数据的逻辑结构

指反映数据元素之间的逻辑关系的数据结构

集合
数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系;
线性结构
数据结构中的元素存在一对一的相互关系;
树形结构
数据结构中的元素存在一对多的相互关系;
图形结构
数据结构中的元素存在多对多的相互关系。

6、数据的物理结构

指数据的逻辑结构在计算机存储空间的存放形式。

数据的物理结构是数据结构在计算机中的表示(又称映像),它包括数据元素的机内表示和关系的机内表示

数据元素的机内表示(映像方法): 用二进制位(bit)的位串表示数据元素。通常称这种位串为节点(node)。当数据元素有若干个数据项组成时,位串中与个数据项对应的子位串称为数据域(data field)。因此,节点是数据元素的机内表示(或机内映像)。

关系的机内表示(映像方法):数据元素之间的关系的机内表示可以分为顺序映像非顺序映像

常用两种存储结构:顺序存储结构链式存储结构

顺序映像借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。

非顺序映像借助指示元素存储位置的指针(pointer)来表示数据元素之间的逻辑关系

7、常用数据结构分类

数组
在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。



是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。

先进后出,后进先出


队列
一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。

队列是按照“先进先出”或“后进后出”的原则组织数据的。队列中没有元素时,称为空队列。


链表
是一种物理存储单元上非连续、非顺序的存储结构,它既可以表示线性结构,也可以用于表示非线性结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。



是包含n(n>0)个结点的有穷集合K,且在K中定义了一个关系N,N满足 以下条件:
(1)有且仅有一个结点 K0,他对于关系N来说没有前驱,称K0为树的根结点。简称为根(root)。  (2)除K0外,K中的每个结点,对于关系N来说有且仅有一个前驱。
(3)K中各结点,对关系N来说可以有m个后继(m>=0)。



图是由结点的有穷集合V和边的集合E组成。其中,为了与树形结构加以区别,在图结构中常常将结点称为顶点,边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。



在计算机科学中,堆是一种特殊的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。


散列表
若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值