一、数据结构是什么

  1. 如何把现实中大量而复杂的问题,以特定的数据类型和特定的数据存储结构保存到计算机的存储器中。
  2. 数据存储包括两方面:个体存储的集合、个体与个体之间的关系的存储
  3. 程序 = 算法 + 数据结构  -->  针对实际问题选择一个好的数据结构,设计一个好的算法

二、数据结构中各名词解释

数据:表示客观事物的符号,比如98(不同语义下可能是成绩,也可能是体重),数据还包括音乐,图像,视屏等。

数据项:组成数据的基本单位

结点:

三、数据结构的两大分类

线性存储

   连续存储

   散列存储(链式存储)

非线性存储

四、结构体

什么叫结构体

用户根据自己的需求,自己定义的复合型数据类型。

为什么会出现结构体

为了表示复杂的数据类型,基本数据类型无法满足要求。比如学生。有sid(学号)、name、age...。基本的数据类型无法表达

怎么使用结构体

      struct Student{
int sid;//学生的学号
int age;//学生的年龄
char name[];//学生的姓名
}; struct Student st = {,"zhangsan",} struct Student st;
st.sid = ;
st.age = ;
strcpy(st.name,"zhangsan"); stuct Student *pst;
pst = &st;
pst->sid = ;
pst->age = ;
strcpy(pst->name,"zhangsan");

结构体注意事项:

  1. 结构体能相互赋值,但不能加减乘除运算
  2. 普通结构体和结构体指针变量 作为函数传递参数问题

五、动态内存分配

动态的分配 : 可以手工分配内存大小,在不使用的情况下,可以手动释放所占用的内存

静态内存分配:程序运行结束,才会释放所占用的内存、不能动态的增加或减少,直至程序运行结束

 动态内存分配:int *pArr = (int*)malloc(sizeof(int) * len);
静态内存分配: int arr[] = {,,,,};

六、指针

在五、动态内存分配中,定义了一个指向整型变量的指针pArr。那么pArr和arr有什么联系呢?

  1. 内存大小:pArr = 4 => arr[0] = 4; 都是占用4个字节,因为数组名保存的是数组首元素的地址
  2. 指向:pArr 指向内存块的首地址,相当于arr[0]
  3. pArr + 1 => arr[1] 表示第二块内存地址
  4. *(pArr + 1)// = 1 <= a[1] 表示 第二块内存的内容

七、跨函数使用内存

一句话搞定:使用molloc分配空间可以跨函数使用内存

八、Typedef

为已有的数据类型起个别名

    typedef int zhangsan; zhangsan i == int i

        ()
typedef struct Student
{
int sid;
char name[];
char sex;
}ST; stuct Student st == ST st ()
typedef struct Student
{
int sid;
char name[];
char sex;
}* PST; struct Student *pst;
PST pst; ()
typedef struct Student
{
int sid;
char name[];
char sex;
}* PST,ST; ST 代表了 struct Student
PST 代表了 struct Student*

01_什么是数据结构以及C语言指针回顾的更多相关文章

  1. 飞控入门之C语言指针回顾

    指针 何为指针?来个官方定义:指针是一个值为内存地址的变量(或数据对象). 一.指针的声明 //示例 int *pi; //pi是指向int类型变量的指针 char *pc; // pi是指向char ...

  2. 数据结构算法C语言实现(二十七)--- 7.2图的遍历

    一.简述 栈与队列,DFS与BFS.仅以连接表为例实现. 二.头文件 BFS要用到的头文件 //3_4_part1.h /** author:zhaoyu email:zhaoyu1995.com@g ...

  3. 数据结构算法C语言实现(二十)--- 6.3.1遍历二叉树

    一.简述 二叉树的遍历主要是先序.中序.后序及对应的递归和非递归算法,共3x2=6种,其中后序非递归在实现上稍复杂一些.二叉树的遍历是理解和学习递归及体会栈的工作原理的绝佳工具! 此外,非递归所用的栈 ...

  4. 数据结构算法C语言实现(十二)--- 3.4循环队列&队列的顺序表示和实现

    一.简述 空队列的处理方法:1.另设一个标志位以区别队列是空还是满:2.少用一个元素空间,约定以队列头指针在队尾指针下一位置上作为队列呈满的状态的标志. 二.头文件 //3_4_part1.h /** ...

  5. 数据结构算法C语言实现(十一)--- 3.4队列的链式表示和实现

    一.简介 FIFO. 二.头文件 //3_4_part1.h /** author:zhaoyu email:zhaoyu1995.com@gmail.com date:2016-6-9 note:r ...

  6. 数据结构算法C语言实现(八)--- 3.2栈的应用举例:迷宫求解与表达式求值

    一.简介 迷宫求解:类似图的DFS.具体的算法思路可以参考书上的50.51页,不过书上只说了粗略的算法,实现起来还是有很多细节需要注意.大多数只是给了个抽象的名字,甚至参数类型,返回值也没说的很清楚, ...

  7. 数据结构算法C语言实现(七)--- 3.1栈的线性实现及应用举例

    一.简述 栈,LIFO.是操作受限的线性表,和线性表一样有两种存储表示方法.下面以顺序存储为例,实现. 二.ADT 暂无. 三.头文件 //3_1.h /** author:zhaoyu email: ...

  8. 数据结构算法C语言实现(六)---2.4一元多项式的表示及相加

    一.简述 利用链表表示稀疏多项式,并基于之前的一些操作(编程实现上还是有所不同的)组合新的操作实现一元多项式的表示及相加. 二.ADT 抽象数据类型一元多项式的定义 ADT Polyomail{ 数据 ...

  9. 数据结构算法C语言实现(五)---2.3重新定义线性链表及其基本操作

    一.简述 ...由于链表在空间的合理利用上和插入.删除时不需要移动等的优点,因此在很多场合下,它是线性表的首选存储结构.然而,它也存在着实现某些基本操作,如求线性表的长度时不如顺序存储结构的缺点:另一 ...

随机推荐

  1. 14、ABPZero系列教程之拼多多卖家工具 新建微信公众号模块

    说是模块,其实在MVC中就是区域,新建一个区域专门管理整个微信功能. Web项目新建区域 在Web项目Areas目录下新建一个区域,名称为“Weixin",如下图: 接着打开web.conf ...

  2. noi 2016 游记

    先挖个坑..这回大概不会太监吧(大雾 day -2 下午起飞的飞机,晚上到了成都..把东西扔到旅馆后就组队外出觅食了... 街上人不多,逛了半天才发现一家卖本地小吃的小店. KPM:诶诶给我来碗酸辣粉 ...

  3. hdu_1358Period(kmp找循环前缀)

    题目在这儿 Period Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  4. HAUTOJ 1283 YK的书架

    题目描述     YK新买了2n+1本相同的书,准备放在家里的3层书架上(每一层放书的数量>=0且<=n).不过YK摆放他的书有些特殊的要求,即任意两层摆放的书的数目之和,严格大于另一层的 ...

  5. .28-浅析webpack源码之compiler.resolvers

    原本该在过WebpackOptionsApply时讲解这个方法的,但是当时一不小心过掉了,所以在这里补上. compiler.resolvers 该对象的三个方法均在WebpackOptionsApp ...

  6. 从零开始学习前端开发 — 16、CSS3圆角与阴影

    一.css3圆角: border-radius:数值+单位; 1.设置一个值:border-radius:20px; 四个方向圆角都为20px(水平半径和垂直半径相等) 2.设置两个值 border- ...

  7. 学而精计算机公共基础学习之路TEST2(程序设计基础)

    程序设计基础 程序设计方法与风格 1.程序设计方法 程序设计: 指设计.编制.调试程序的方法和过程. 程序设计方法是研究问题求解如何进行系统构造的软件方法学.常用的程序设计方法有:结构化程序设计方法. ...

  8. 你知道织梦后台安装插件时为什么会出现这个Character postion 686, 'item'&n

    https://zhidao.baidu.com/question/589525064.html?qbl=relate_question_3&word=Tag Character postio ...

  9. FPGA上如何求32个输入的最大值和次大值:分治

    上午在论坛看到个热帖,里头的题目挺有意思的,简单的记录了一下. 0. 题目 在FPGA上实现一个模块,求32个输入中的最大值和次大值,32个输入由一个时钟周期给出.(题目来自论坛,面试题,如果觉得不合 ...

  10. [转]sysctl -P 报错解决办法

    问题症状 修改 linux 内核文件 #vi /etc/sysctl.conf后执行sysctl  -P 报错 error: "net.bridge.bridge-nf-call-ip6ta ...