算法"/>
啊哈算法
文章目录
- 前言
- 一、链表是什么?
- 二、链表的存储
前言
数组在平常使用中的比较多的,但是有时候我们会需要在一串已经排好序的序列中,插入一个数字,并要求仍符合从小到大的要求。
2 3 5 8 9 10 18 26 32 ,现在要插入6并且是排序好的,此时使用数组的话,就要将8以及8以后的数字往后挪一位。
这样的操作会很耽误时间!使用链表会快很多,
一、链表是什么?
在C语言中可以使用指针和动态分配内存函数malloc来实现。e~指针是啥子嘞,指针其实挺简单的。
先看看下面两行代码
int a;
int *p;
- 第一行就是定义一个整型变量a,第二行你会发现p前面多了一个*号,这就表示一个整型指针变量p。即定义了一个指针;在这里定义了一个存放整数的内存空间地址。
doule *p;//则定义一个存放浮点数的内存空间地址
- 它的作用:存储一个地址,确切的说是存储一个内存空间的地址。
现在知道指针是用来存储地址的,那么问题来了:整型指针p如何才能存储整型变量a的地址呢? 如下:
p=&a;
&符号就是就是经常在scanf函数中用到的&。它叫做取地址符,p=&a;这样p就获得了整型变量a的地址。
通常情况下,我们都会说指针p指向整型变量a。那么p指向a之后有什么用呢?
用处:就是可以用指针p来操作变量a了。
例子
//通过操作指针p来输出变量a的值
#include<stdio.h>
int main(){int a=10;int *p;p=&a;printf("%d",*p);getchar();getchar();return 0;
}
运行结果:
10
这里printf里面*p的 *号叫做 间接访问运算符, 作用是取得指针p所指向的内存中的值。
- 在C语言中*号有三个用途
- 乘号,用做乘法运算,例如5*6;
- 声明一个指针变量,在定义指针变量是使用,例如int *p;
- 间接访问运算符,取得指针指向的内存中的值,例如printf(“%d”,*p);
可能到现在觉得指针并没有什么多大用处啊啊。
不要着急,要放大招了。
回想一下,我们要存储一个整数10,除了使用int a这一种在内存中申请一块区域来存储,还有另外一种动态存储方法
malloc(4);
//malloc的作用:从内存中申请分配指定字节大小的内存空间。
//上面malloc(4)就申请了4个字节的空间。
如果你不知道int类型是4个字节的,还可以使用sizeof(int)获取int类型所占用的字节数
malloc(sizeof(int));需要注意的是在使用malloc函数是需要用到stdlib.h头文件
#include <stdio.h>
#include <stdlib.h>
int main(){int *pp=(int *)malloc
更多推荐
啊哈算法
发布评论