嘉兴网站建设运营,网页设计的尺寸,陕西企业网站建设哪家专业,dede 网站目录大纲 数据结构、算法数据结构#xff1a; 1. 线性表#xff1a;顺序表、链表#xff08;单向链表#xff0c;单向循环链表#xff0c;双向链表#xff0c;双向循环链表#xff09;、栈#xff08;顺序栈#xff0c;链式栈#xff09;、队列#xff08;循…大纲 数据结构、算法数据结构 1. 线性表顺序表、链表单向链表单向循环链表双向链表双向循环链表、栈顺序栈链式栈、队列循环队列链式队列 2. 树二叉树、遍历、创建算法 查询方法、排序方式 为什么要学数据结构 1.C语言是学习如何写程序数据结构是学习如何简洁高效的写程序 2.如果遇到一个实际问题需要写代码实现相应功能需要解决两个问题 1.如何表达数据间的逻辑关系以及怎么存储到计算机当中 数据结构数据的逻辑结构以及存储操作 数据不再是单纯的数字而是类似于一个集合的概念 结构数据之间的关系 2.采用什么方法去解决 采用算法去解决
数据结构算法程序
一丶数据结构
1.概念 数据的逻辑结构存储结构及操作数据的运算
2.数据 数据不再是单一的数值而是类似于集合的概念 数据元素是数据的基本单位由若干个数据项组成 数据项是数据的最小单位描述数据元素信息 数据元素又叫节点 3.结构
3.1逻辑结构
数据元素并不是独立存在的他们之间存在着某种关系联系或结构。
元素和元素之间的关系线性关系 线性关系 ---》 线性结构 ---》一对一 ----》线性表顺序表、链表、栈、队列层次关系 层次关系 ---》 树形结构 ---》一对多 --- 》 树二叉树网状结构 网状关系 ---》 图状结构 ---》 多对多 ---》图
3.2存储结构
数据的逻辑结构在计算机中的具体体现数据的运算
顺序存储 特点内尺连续随机存取每个元素占用较少 实现数组
链式存储 特点内存不连续通过指针实现 链表实现通过定义结构体里面是数据域和指针域
#includestdio.h
struct node
{int data;//数据域存放节点要保存的地址struct node *next;//指针域指向下一个节点的地址类型为结构体指针
};
int main(int argc, char const *argv[])
{ //定义三个节点struct node A{1,NULL};struct node B{2,NULL};struct node C{3,NULL};//连接三个节点A.nextB;//连接A和B节点让A中的指针域保存B的地址B.nextC;//连接B和C节点让B中的指针域保存C的地址printf(%d\n,A.data);//打印A中的数据域printf(%d\n,(A.next)-data);//打印B中的数据域printf(%d\n,(A.next)-next-data);//打印C中的数据域return 0;
}索引存储 在存储数据的同时建立一个附加的索引表。 也就是索引存储结构 索引表 存数据的文件可以提高查找速度特点检索速度快但是占用内存多删除数据文件要及时更改索引表。 散列存储 数据在存储的时候与关键码之间存在某种对应关系 存的时候按照对应关系存 取的时候按照对应关系取
4.操作 增、删、改、查 二丶算法
1.概念 算法就是解决问题的思想方法数据结构就是算法的基础
2.算法的设计
算法的设计取决于数据的逻辑结构 算法的实现依赖于数据的存储结构
3.算法的特点
有穷性步骤是有限的 确定性每一个步骤都有明确的含义无二义性 可行性在规定时间内可以完成 输入 输出
4.评价算法的好坏 正确性 保证算法可以正确实现功能 易读性 容易被解读 健壮性 : 容错处理 高效性 执行效率算法执行快慢容易受到计算机性能的影响不可以作为评判算法高效性的标准这通过可执行语句重复执行次数来衡量算法是否高效 。(时间复杂度) 低存储性 占用空间少 5.时间复杂度 算法的可重复执行语句执行的次数, 通常时间复杂度用一个问题规模函数来表达 T(n) O(f(n)) T(n) //问题规模的时间函数 n //问题规模输入量的大小 O //时间数量级 f(n) //算法的可执行语句重复执行的次数 用问题规模n的某个函数f(n)来表达 计算大O的方法 (1)根据问题规模n写出表达式 f(n) (2) 只保留最高项其它项舍去 (3) 如果最高项系数不为1除以最高项系数 (4) 如果有常数项将其置为1 //当f(n)的表达式中只有常数项的时候有意义 f(n) 8 如f(n)8 -O(1) f(n) 3n^5 2n^3 6*n^6 10-On^6
6.空间复杂度 算法占用的空间大小。一般将算法的辅助空间作为衡量空间复杂度的标准。 算法占用的存储空间包括 1.输入输出数据所占空间 2.算法本身所占空间 3.额外需要的辅助空间