数据结构基础

数据结构与算法

数据结构就是个体的存储和个体的关系存储
算法就是对存储数据的操作

衡量算法标准

1.时间复杂度
2.空间复杂度

还可以有很多,难易程度,健壮性…..

指针

指针是c语言的灵魂,最终指向一个地址,(地址就是指针)
其值就是内存单元的编号(指针变量),指针的本质是一个操作受限的非负整数

int i = 10;
int *p = &i;  
//等价于 int *p;   p = &i;

指针变量也是一个变量,只不过它存放的不是内存单元中的内容,只能存放内存单元的地址

数组中的指针

int a[5] = {1,2,3,4,5};  
printf("%p\n",*(a+3));  
// a表示一个地址,a+3表示a后面的第三个内存地址,*(a+3)表示这个地址的值
//这里数字增加1时一定指向下一个元素,其内部原理是:[a地址+3*a所占字节数]
printf("%p\n",*a+3);  // *a+3  等价于  a[0]+3 ,
printf("%p\n",a[3]);
printf("%p\n",3[a]);
//一维数组名是一个指针常量,存放的是一维数组第一个元素的地址
//a[i] <==> *(a+1) <==> 3[a] 偏移地址  

访问数组只要知道数组的第一个元素的地址,知道这个数组的长度既可达到需求

函数中的指针

包含在函数中通过指针赋值的方法,来切换具体的值

结构体

为了表示一些复杂的数据,普通的基本类型无法满足需求,是用户根据需要自己定义的数据类型,相应的,类也属于一种数据结构,

类比于java或者C++中的类,

class Student{
    int sid;
    String name;
    int age;
    String gender;

    void delStudent(){
    //方法
    }
}
//这个就是java中的类,在类中可以包含方法

结构体

struct Student
{
    int sid;
    String name;
    int age;
    String gender;
};
//这个是C中的机构体,class换成struct,其中不包含方法,只有属性(结构体的功能较弱)

使用结构体有两种方式:

struct Student st = {1, "bigash", 20};
struct Student *pst = &st; 
st.sid = 99; //第一种方式

pst->sid = 99;  //第二种方式

结构体变量不能加减乘除,但可以相互赋值

内存

C语言的执行并不存在自动释放内存这一说,
操作系统回收内存后,也不会对内存空间中遗留的数据进行清理,所以有的时候会遇到赋值的内存中有垃圾数字存在,这也体现了初始化的重要性
对于内存的调用,C语言中采用的是malloc动态分配,跨越函数调用的时候需要格外注意

最终的代码存放在Github仓库 Review部分

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇