数据结构读书笔记1

1.数据结构链表
数组存储需要连续的内存空间,如果需要太多内存,可以通过链表来实现,链表是离散存储。


2.数据结构图
求最短路径等不能通过链表,属实现,只能通过图实现。

3.数据存储一般分两步
特定的数据类型(数据本身)
特定的存储结构(数据和数据的关系)

数据结构=个体+个体的关系
算法=对存储数据的操作

4.算法
解题的方法和步骤
衡量算法的标准
(1)时间复杂度:大概程序要执行的次数,而非执行的时间。
(2)空间复杂度:执行过程中大概所占的最大内存。
(3)难易程度:容易看懂,应用。
(4)健壮性:稳定性。

5.数据结构的地位
简单的可以说成数据库是数据结构狭义的简单化实现。学好数据结构,类似于数据库的实现会非常容易。
程序=数据的存储+数据的操作+计算机执行的语言。
但是学了数据结构不一定能做出什么东西,只会在以后的学习中提供更大的帮助。


6.指针
指针式c语言的灵魂,即地址
是内存单元的编号,从o开始的非负整数,(0--FFFFFFFF)即(1到4G-1)
指针变量时存放内存单元地址的变量,指针的本质是操作受限的分负整数。

指针的一个好处:在传参的时候可以节省内存,节省时间,如果要将一个200个字节的结构体数据传递给另外一个函数,如果用首地址指针就只需要4个字节就可以完成。


7.如何通过(无返回值)被调函数改变主调函授的值
(1)实参为相关变量地址
(2)形参以相关变量类型为类型的指针变量。
(3)在被调函数中可以通过*形参变量名的方式改变主函数的值。


8.将一个整数转换为变量地址
(int *)0xFFFFFFFF;表示将0xFFFFFFFF强制转换为地址变量

9.类能够比结构体更好的实现目标函数实现,结构体函数实现由缺陷。
结构体是用户根据实际需要自己定义的复合数据类型。


10.java中可以给一个字符串变量直接赋值,但是C++里面不可以,只能通过strcpy实现(加上#include 头文件)
java:https://www.360docs.net/doc/e74134971.html,="lisi";
C++ :strcpy(https://www.360docs.net/doc/e74134971.html,,"lisi");

11.结构体变量不能加减,只能赋值,st1=st2;
普通结构体变量结构体指针变量作为函数参数传递。

12.跨函数使用内存只能通过动态分配实现,因为动态分配的内存在释放之间都存在,而其他局部变量,函数结束,寿命也跟着结束,但是如果不释放,很可能造成内存泄露,这就是操作系统时间越长运行越慢的原因。


13.存储方式:
线性结构:
连续存储(数组)
离散存储(链表)
定义:
n个节点离散分配
彼此通过

指针连接
每个节点只有一个前驱结点,每个节点只有一个后续节点
首节点没有前驱结点,尾节点没有后续节点
专业术语:
首节点:第一个有效节点
尾节点:最后一个有效节点
头结点:第一个有效节点之前的那个节点,头结点并没有有效数据,头结点是为了方便对链表的操作。头结点的数据类型和首节点是一样的。
头指针:指向头结点的指针变量
尾指针:指向尾节点的指针变量
确定一个链表只需要头指针一个参数:因为可以通过头指针推算出链表的其他所有信息。

链表的分类:
单链表
双链表:每一个节点有两个指针域
循环链表:能通过任何一个节点找到其他所有节点的单链表
非循环链表
算法:
遍历
查找
销毁
清空
删除
求长度
排序

线性结构中最常用的是堆栈和队列

非线性结构:树,图


14.数组的定义
struct arr
{
int * pBase; //存储数组第一个元素的地址
int len; //数组所能容纳的最大元素的个数
int cnt; //当前数组有效元素个数
};

void init_arr(struct arr* pArr,int length); //初始化,需要指定对谁初始化,就是初始化数组的地址,长度等
{
pArr->pBase=(int*)malloc(sizeof(int)*length); //注意要加
if(NULL==pArr->pBase)
{printf("动态内存分配失败!\n");
exit(-1);//终止整个程序
}
else
{pArr->len=length;
pArr->cnt=0;
}
}

bool append_arr();//追加
bool insert_arr();//插入
bool delete_arr();
int get();
bool is_empty();
bool is_full();
void sort_arr();
void show_arr();
void inversion_arr();


















































相关文档
最新文档