数据结构概述
狭义:数据结构是专门研究数据存储问题
数据的存储包含两方面:个体的存储+个体关系的存储
广义:数据结构既包括数据的存储也包含数据的操作
对存储数据的操作就是算法
算法:
狭义:算法是和数据的存储方式密切相关
广义:算法与数据的存储方式无关,这也叫泛型思想

衡量算法的标准
1.时间复杂度
大概程序要执行的次数,而非执行的时间
2.空间复杂度
(1)算法执行过程中大概所占用的最大内存
3.难易程度
4.健壮性

程序 = 数据的存储+数据的操作+可以被计算机执行的语言

在学习数据结构之前所需要的预备知识
一、指针(C语言的灵魂)
指针的定义:地址;内存单元的编号;从0开始的非负整数(0~4G-1)

关于指针的通俗理解:指针就是地址,地址就是指针;指针变量是存放内存单元地址的变量指针的本质是一个操作受限的非负整数
关于指针的分类:1.基本类型指针2.指针与数组

一些实例代码
#include<stdio.h>

int main()
{
int * p; //p是个指针变量,int * 表示指针的类型
int i = 10;
int j;
p = &i;
j = *p;

printf("%d\n",j);return 0;

}

#include<stdio.h>int main()
{int * p;  //p是个指针变量,int * 表示指针的类型int i = 10;int j;p = &i;j = *p;printf("%d\n",j);return 0;
}

运行结果

#include <stdio.h>int main()
{int a[5] = {1,2,3,4,5};printf("%p\n",a+1);printf("%p\n",a+2);printf("%d\n",*a+3);return 0;
}

运行结果

通过指针来改变数组元素的值

#include <stdio.h>void Show_Array(int * p,int len)
{p[0] = -1;}int main()
{int a[5] = {1,2,3,4,5};Show_Array(a,5);printf("%d\n",a[0]);return 0;
}

运行结果

二、关于结构体
为什么会出现结构体
为了表示一些复杂的数据,而普通的基本类型变量无法满足要求
什么叫结构体
结构体是用户根据实际需要自己定义的复合数据类型

如何使用结构体两种方式struct Student st = {1000,"zhangsan",20};struct Student * pst = &st;1.st.sid2.pst->sidpst所指向的结构体变量中的sid这个成员注意事项:结构体变量不能加减乘除,但可以相互赋值普通结构体变量和结构体指针变量作为函数传参的问题指针与结构体的实例代码:
#include <stdio.h>
#include <string.h>void f(struct Student * pst);
void g(struct Student st);
void g2(struct Student *pst);struct Student
{int sid;char name[20];int age;
};int main()
{struct Student st ;f(&st);g(st);g2(&st);//printf("%d %s %d\n",st.sid,st.name,st.age);return 0;
}//耗内存,耗时间  不推荐
void g(struct Student st)
{printf("%d %s %d\n",st.sid,st.name,st.age);
}void g2(struct Student *pst)
{printf("%d %s %d\n",pst->sid,pst->name,pst->age);
}void f(struct Student * pst)
{(*pst).sid = 99;strcpy(pst->name,"zhangsan");pst->age = 22;
}

运行结果

三、动态内存的分配 与释放
malloc的全称是memory allocation,中文叫动态内存分配,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存,且分配的大小就是程序要求的大小。

实例代码

#include<stdio.h>
#include <malloc.h>int  main()
{int a[5] = {4,10,2,8,6};int len;printf("输入你需要分配的数组的长度:len=");scanf("%d",&len);int * pArr = (int *)malloc(sizeof(int) * len);// *pArr = 4; //类似于 a[0] = 4;//pArr[1] = 10;  //类似于a[1] = 10;//printf("%d %d",*pArr,pArr[1]);//可以把pArr当做一个普通数组来使用for(int i = 0;i<len;i++){scanf("%d",&pArr[i]);}for(int i = 0;i<len;i++){printf("%3d",pArr[i]);}free(pArr) ; //把pArr所代表的动态分配的20个字节的内存释放return 0;
}

运行结果

学习数据结构的一些预备知识相关推荐

  1. 学习SLAM需要哪些预备知识?

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 编辑:3D视觉工坊 链接:https://www.zhihu.com/question/3518606 ...

  2. IP地址和子网划分学习笔记之《预备知识:进制计数》

    一.序:IP地址和子网划分学习笔记开篇 只要记住你的名字,不管你在世界的哪个地方,我一定会去见你. --新海诚 电影<你的名字> 在我们的日常生活中,每个人的名字对应一个唯一的身(敏)份( ...

  3. 【金阳光测试】Android自动化 -- 学习历程:自动化预备知识上下

    章节:自动化基础篇--自动化预备知识上&&下 网易云课堂: 上:http://study.163.com/course/courseLearn.htm?courseId=712011# ...

  4. 学习Identity Server 4的预备知识

    我要使用asp.net core 2.0 web api 搭建一个基础框架并立即应用于一个实际的项目中去.这里需要使用identity server 4 做单点登陆.下面就简单学习一下相关的预备知识. ...

  5. 学习一个新领域的知识的最佳方法和最快时间各是什么?

    Liu Cao ,「学习方法」是个伪命题 玉某人.冷峻.淡之 等人赞同 有个TED演讲简直是为这个问题量身订做的. The first 20 hours-How to learn Anything. ...

  6. 从零学习数据结构与算法---基础与课前准备笔记

    这里开始学习 数据结构与算法相关知识,这个主要是基于 极客时间 大佬  覃超老师的 算法训练营 和  王争老师的 数据结构与算法之美.这里再次感谢两位老师,下面文章内容主要是自己作为复习使用的笔记,如 ...

  7. C语言数据结构预备知识模块二:结构体

    继上面的基础模块知识之指针之后,我们对数据结构的预备知识--结构体进行记录学习. 在学习 Java之后,我们对面向对象的编程方法更为习惯,因为类Class的出现,让我们对"万事万物皆对象&q ...

  8. (d2l-ai/d2l-zh)《动手学深度学习》pytorch 笔记(2)前言(介绍各种机器学习问题)以及数据操作预备知识Ⅰ

    开源项目地址:d2l-ai/d2l-zh 教材官网:https://zh.d2l.ai/ 书介绍:https://zh-v2.d2l.ai/ 笔记基于2021年7月26日发布的版本,书及代码下载地址在 ...

  9. react学习预备知识_在10分钟内学习React基础知识

    react学习预备知识 If you want to learn the basics of React in the time it takes you to drink a cup of coff ...

最新文章

  1. 编程珠玑第二章习题答案
  2. lvs在linux系统下安装,Linux下安装lvs
  3. Linux下rz,sz
  4. MongoDB(课时18 修改器)
  5. 方便食品直接上菜 自嗨锅和西贝哪来的勇气?
  6. MyBatisPlus3.x代码生成器生成实体类自定义需要填充的字段
  7. 计算机视觉:基于眼疾分类数据集iChallenge-PM图像分类经典模型剖析(LeNet,AlexNet,VGG,GoogLeNet,ResNet)
  8. 计算机网络知识点总结(第六版,谢希仁)
  9. Timus 1018 树形DP
  10. 紧急预警:wls9_async_response.war组件漏洞的延续
  11. SpringMVC的响应数据和结果视图
  12. linux中 查看系统属性 与 可执行文件属性 的方法
  13. WM5/6常见进程列表
  14. html图片白色背景怎么去掉,怎么把PPT图片的白色背景去掉 PPT去除图片背景颜色技巧...
  15. 网卡TSO、UFO、GSO、LRO、GRO和RSS介绍
  16. linux服务器安装cuda,在Linux下安装Cuda5
  17. 【清华大学】操作系统 陈渝 Part2 —— 中断、异常和系统调用
  18. Navicat中出现MySQL server has gone away错误
  19. 【Python】正则表达式判断是否存在连续N个字母
  20. React 全新文档上线!

热门文章

  1. 呕心沥血苦战6个月,熬夜总结的这份Java0基础进阶架构师视频+笔记+课件+源码资料,快快收藏手慢无
  2. Pandas实现股票分析
  3. oracle sde,oracle sde动态库配置
  4. RXD and dividing
  5. 基于数字光栅投影的结构光三维测量技术
  6. 计算机视觉学习7_多视图几何_基础矩阵
  7. 农地里怒放的生命:常锋植保无人机
  8. JavaScript - 对象专用语句[ with语句 ]
  9. 托爾斯泰《安娜‧卡列妮娜》的寫作背景
  10. 全球及中国麦克风电源行业市场发展趋势与投资战略规划研究报告2022-2028年