摘要:
双向链表 单链表查找某结点的后继结点的执行时间为O(1);单链表查找某结点的后继结点的执行时间为O(n) 在单链表的每个结点里再增加一个指向其直接前驱的指针域prior,这样链表中就形成了有两个方向不同的链 双向链表具有对称性:p->next->prior=p=p->prior->next 双向链表 阅读全文
摘要:
循环链表 一种头尾相接的链表,表中最后一个结点的指针域指向头结点 ,整个链表形成一个环即没有NULL指针,因此遍历操作时,终止条件是否等于头指针 优:从表中任一结点出发,均可找到表中其他结点 头指针表示单循环链表: 找a1的时间复杂度:O(1) 找an的时间复杂度:O(n) 当表的操作常常在首尾进行 阅读全文
摘要:
线性表的链式存储 线性表的链式表示又称为非顺序映像或链式映像 结点在存储器中位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻;链表中的逻辑次序和物理次序不一定相同;访问时只能通过头指针进入链表,并通过每个结点的指针域依次向后顺序扫描其他结点(顺序存取法),因此访问各个结点时间不同 用一组物理位 阅读全文
摘要:
线性表的顺序存储 线性表的顺序表示又称为顺序存储结构或顺序映像 顺序存储:把逻辑上相邻的数据元素(类型相同)存储在物理上相邻(中间没有空出存储单元,占用一片连续的存储空间)的存储单元中的存储结构;逻辑位序与物理位序相差1 优: 任一元素可以随机存取 存储密度大 缺: 属于静态存储形式,元素个数不能自 阅读全文
摘要:
线性表 线性表是具有相同特性的数据元素的一个有限序列; 是一种典型的线性结构 线性表的两种存储结构: 顺序存储结构 链式存储结构 抽象数据类型线性表 抽象数据类型线性表的定义: ADT List{ 数据对象:D=ai|ai属于Elemset,(i=0,1,2,3,...,n,n>0)} 数据 阅读全文
摘要:
传值:改变的是形参的值,实参的值并未改变 函数分别有自己的存储空间 #include <stdio.h> void swap(int m,int n){ int t; t=m; m=n; n=t; } int main(void) { int a=1,b=2; swap(a,b); printf(" 阅读全文
摘要:
数据类型及抽象数据类型 数据类型 定义在一组性质相同的值的集合以及定义在这个值的集合上的一组操作的统称,即数据类型=值的集合+值集合上一组操作 数据类型的作用: 约束变量或常量的取值范围 约束变量或常量的操作 抽象数据类型(ADT) 一个数学模型以及定义在此数学模型上的一组操作;不考虑计算机内的具体 阅读全文
摘要:
时空复杂度 算法效率: 时间效率:程序在计算机上执行所消耗的时间 事后统计 缺:编写程序实现算法要花费较多时间精力;所得实验结果依赖于计算机的软硬件等环境因素,掩盖算法分身的优劣 事前分析:估算;算法运行时间=一个简单操作所需的时间*简单操作次数(转化为语句频度的比较) 例: 1 for(i=1;i 阅读全文
摘要:
相关概念 程序=数据结构+算法 算法:对特定问题求解方法和步骤的一种描述,是指令的有限序列 算法的描述: 自然语言 流程图:传统流程图、NS流程图(盒图) 伪代码 程序代码 算法的特性: 有穷性:有穷步之后结束,每一步都在有穷时间内 确定性:有确切含义,无二义性 可行性:可执行的 输入:0或多个输入 阅读全文
摘要:
C语言例题 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? #include <stdio.h> #include <math.h> int main() { int x,i,y; for (int i = 0; i < 100000; ++i) { 阅读全文