文档章节

C语言数据结构学习笔记(1)

刘新全
 刘新全
发布于 2015/05/14 14:46
字数 1099
阅读 42
收藏 0

如果你学习过java,会发现里面有很多像array,list,String等等,这些不外乎是存储一类相同数数据的结构,如:

string
a
b
......
z
int
1
2
3
.....
n

数据结构是元素和元素关系的集合,如上面的例子string就是a,b,c...的集合,其中包括了a,b,c....的关系,什么关系:c是在b后面,a又在b后面,这关系干什么用的,那就关系到了算法,算法简单点说就是对存储数据的操作,如初始化,追加,删除,排序,插入等等。就像是数据结构是:饭;而算法就是做做饭的方法,你是要蒸着吃,还是要炖着吃。饭不一样,做法不一样,有清蒸鱼,红烧鱼,糖醋鱼。。。。也就是说数据结构不一样,算法也不一样。如数组遍历可以用a[1],a[2],a[3]..a[i],而链表就不行了,链表要找到第3个元素,就要知道第2个元素,要找到第2个元素,就要知道第1个元素,比较麻烦。

为什么要这样,多麻烦,用一种结构不行了???那你炒菜要用高压锅吗,你蒸米要用电磁炉吗??需求不一样的。之所以有些这么多结构供你选则,原因只有一个:它很适合我!!!!

上面的图只是直观的表面:在内存中是怎么实现的。那就要介绍一下malloc函数:动态申请内存(menery  allocable)英语真的不怎么好!!用法如下int *p = (int *)malloc(100),我介绍一下什么意思,高手绕道!!俺都是菜鸟!

内存访问是以字节为单位,访问只能是字节的倍数如,1个字节,2个字节,100个字节。。那上面的malloc中的100就是100个字节。这就明白了,原来malloc就是给内存要东西去了,啥东西。空间啊。。要多大,要100。好,给你。好了,有空间了,那就放东西吧,随便放反正这里我说的算,整数,小数,字符,统统可以。malloc函数会返回一个类型的首地址,先不说啥类型,看原函数定义void *malloc(unsigned int num_bytes);  void没类型,那可不行,系统不知道你存啥所以就没自作主张,那你自己知道存啥,所以要申明(强制准换),转化有啥用,malloc会返回一个类型,返回类型的元由你定,看图找真象:

int类型malloc返回了4个字节,char返回了1个字节。那这有啥用??返回类型是你访问的单元。。。。别慌。。刚才说了内存访问的单元是字节,你访问的单元由你定,如int(1,2,3。。。)。你可能不去访问字节,而去访问其他的。就是这意思。你访问以什么为单位就定什么类型。下面另一个准备知识点:指针。你怕它,我也怕。。。。。先别怕,亲。。看图:


一小块指向一大块,我用1元买了价值100的东西,换算不划算,自己说。就是你用一小块内存当一大块内存用(不严谨,但可以这么认为),为什么要那么麻烦,我有的是内存!!亲,你有100G还是200G,你如果玩过网游,这回发现电脑忒卡,没内存了。一个大型程序一定要处理好内存的分配问题。对你以后用帮助的。箭头就是指针,具体c语言实现看下面int * p = {数组地址},int a[5] = {1,2,3,4,5},p = a;上面意思是p(小块)指向a(大块);

上面的是数组,原来说了还有链表,看最上头的链表,一个箭头,又一个箭头,就是找朋友,怎么着,用箭头。补充一点:链表的内存分配是不连续的,这一块,那一块。。最后用箭头连再了一起。

前提准备就这么多,算法在具体实践中介绍。希望对你有所帮助。以上均为自己理解,错误在所难免,也不严谨,敬请指正!!!






© 著作权归作者所有

刘新全
粉丝 13
博文 57
码字总数 29105
作品 0
兰州
程序员
私信 提问
C语言实现数据结构之栈的详解

在函数调用的过程中,需要的就是先进后出的特点,因此,栈就出现了。 栈是一种数据结构,是计算机怎么处理程序运行的一种方式。具有先进后出的特点,下面看的就是这些抽象的数据结构怎么用C...

ningcaichen66
2017/09/21
0
0
Go学习笔记二: 函数,文件操作及网络通信

Go学习笔记二: 函数,文件操作及网络通信 1.引言 在《Go学习笔记一》中,我对Go语言中的基础数据类型、控制结构做了总结,该篇笔记的动机来源于我实际工作中利用Go解决一些小问题。问题本身...

西昆仑
2016/05/29
112
0
GLSL学习笔记

限定符: attribute表示修饰顶点属性的变量,这种类型的变量只能出现在vertex shader中,且为只读性性。 uniform表示修饰图元,帧的变量,这种类型的变量无论在vertex shader还是fragment sh...

长平狐
2012/08/13
71
0
【Java资源免费分享,网盘自己拿】

JavaSE: Java马士兵:链接:https://pan.baidu.com/s/1jJRvxGi密码:v3xb Java毕向东:链接:https://pan.baidu.com/s/1ggzHkPl密码:qez1 Java刘意:链接:https://pan.baidu.com/s/1kVZQ......

阿斯顿方法
2018/03/02
0
0
C语言再学习--关键字

C语言一共有32个关键字,如下表所示: 关键字 说明 auto 声明自动变量 short 声明短整型变量或函数 int 声明整型变量或函数 long 声明长整型变量或函数 float 声明浮点型变量或函数 double 声...

qq_29350001
2016/11/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式协调服务zookeeper

ps.本文为《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之一 ZooKeeper ZooKeeper曾是Apache Hadoop的一个子项目,是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它...

ls_cherish
今天
4
0
redis 学习2

网站 启动 服务端 启动redis 服务端 在redis 安装目录下 src 里面 ./redis-server & 可以指定 配置文件或者端口 客户端 在 redis 的安装目录里面的 src 里面 ./redis-cli 可以指定 指定 连接...

之渊
昨天
2
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
昨天
4
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
昨天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
昨天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部