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

如果你学习过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个元素,比较麻烦。135237_HBQh_2248826.png

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

上面的图只是直观的表面:在内存中是怎么实现的。那就要介绍一下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会返回一个类型,返回类型的元由你定,看图找真象:

141922_bHdW_2248826.png

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

142914_5ZHg_2248826.png


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

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

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






转载于:https://my.oschina.net/liuxinquan/blog/414797

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值