一、数据结构是什么

  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. C语言实现整数和16进制互相转换

    编译环境:Dev-C++ 5.2.0.3 使用sprintf()函数实现转换,代码如下: #include <stdio.h> #include <stdlib.h> int ...

  2. Eclipse导入Hadoop源码项目及编写Hadoop程序

    一 Eclipse导入Hadoop源码项目 基本步骤: 1)在Eclipse新建一个java项目[hadoop-1.2.1] 2)将Hadoop压缩包解压目录src下的core,hdfs,mapred ...

  3. Phabricator API Go 创建task/提交文件到Phabricator

    Go Phabricator API 代码/程序创建task/提交文件到Phabricator Creat Task or upload file to phabricator with code i ...

  4. isdigit函数

    isdigit是计算机应用C语言中的一个函数,主要用于检查参数c是否为阿拉伯数字0到9. 相关函数 isdigit 表头文件 #include <ctype.h>(C语言),#includ ...

  5. bzoj:1700: [Usaco2007 Jan]Problem Solving 解题

    Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地说,他们有P (1 <= P <= 300) 道题目要做. 他们还离开了农场 ...

  6. HDU1159-Common Subsequence-LCS

    上次写题解写到一半,写的比较具体,没写完,忘记存草稿了...导致现在没心情了. Common Subsequence Time Limit: 2000/1000 MS (Java/Others)    ...

  7. ECharts 环形饼图 动态获取json数据

    ECharts  环形饼图 动态获取json数据 效果图如下: 一.html部分 <div id="secondPieChart" style="width:100 ...

  8. 注意SSIS中的DT_NUMERIC类型转换为字符类型(比如DT_WSTR)时,会截断小数点前的0

    我们知道SSIS中有许多数据类型,如下图所示: 但是DT_NUMERIC这个类型有个陷进要注意,我们来做个实验,随便定义一个String类型的SSIS包变量,然后打开该变量表达式窗口: 在变量表达式窗 ...

  9. vmstat & mpstat & w

    vmstat # vmstat 3 2procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- ...

  10. 如何完成域名和ip地址的绑定

    首先,我们要知道什么是域名绑定,所谓域名绑定就是是指已选定的域名与服务器主机的空间绑定,实在是在域名注册查询上设置或者WEB服务器上设置,使一个域名被指导向一特定空间,从而使访问者访问你的域名的时候就 ...