【数据结构】
C语言基础
typedef struct student{
char name[20]; //姓名
int num; //学号
float a; //分数
}Student;
Student S1;
S1.name="lihua";
S1.num=005;
S1.a=97.5;
声明
定义
初始化
typedef
define
数组-----完全初始化、不完全初始化
指针
int *p,a=3;
p=&a;
#include<stdio.h>
int main()
{
int a[5] = { 1,2,3,4,5 };
int* p1 = a;
printf("p1=%d\n", *p1);
printf("&p1=%p\n", &p1);
}
*p1表示其地址对应的值,&p1表示取这个指针的指针(地址)
链表
typedef int ElemType;
typedef struct LNODE{
ElemType data;
struct LNODE *next;
}LNode,*LinkList;
函数--系统函数、用户定义函数
#include<stdio.h>
int max(int x,int y);
int main(){
int a=10,b=25,num_max=0;
num_max=max(a,b);
printf("num_max=%d\n",num_max);
return 0;
}
int max(int x,int y){
return x>y?x:y;
}
C++
创建:new 自动为动态数组分配空间
删除:delete 为动态数组释放内存
输入输出:cin cout
C
创建:malloc 为动态数组分配空间
删除:free 为动态数组释放内存
输入输出 scanf printf
累加求和
#include<stdio.h> int add(int n){ int i,sum=0; for(i=0;i<=n;i++) sum=sum+i; return sum; } int main(){ int s; s=add(10); printf("1+2+3+4+5+……+10\n",s); }
线性数据结构:线性表、栈、队列、一维数组、串
非线性结构:二维数组、多维数组、广义表、树与二叉树、图
查找
排序
一
基本概念
数据、数据元素、数据项、数据对象、数据结构
数据--若干名学生
数据元素--每个学生的信息(例:包含学号、姓名、性别、专业等)
数据项--每一个信息(例:学号)
数据对象(例:每一个班)
数据结构(例:一个宿舍)
数据结构三要素
逻辑结构:从逻辑结构上描述数据,与数据的存储无关,它是从具体问题抽象出来的数学模型
物理结构(存储结构):数据元素及其关系在计算机内存中的存储形式(又称映像)
数据的运算:数据上的某些操作,包括:增删改查排序等
逻辑结构的种类:划分方法一
线性结构:有且仅有一个开始和一个终端结点,并且所有结点都最多只有一个直接前驱和一个后继,例如:线性表、栈、队列、串
非线性结构:一个结点可能有多个直接前驱和直接后继,例如:树、图
逻辑结构的种类:划分方法二
集合:数据元素间除“同属于一个集合”外,无其他关系
线性结构:一个对一个线性关系,如线性表、栈、队列
树形结构:一个对多个层析关系
图形结构:多个对多个任意关系
物理结构(存储结构)的种类
顺序存储结构
链式存储结构
索引存储结构
散列存储结构(哈希) %
数据的运算(增删改查)
抽象数据类型定义
数据类型:是一个值的集合和定义在此值集上的一组操作的总称
按“值”的不同特性,数据类型可分为:
(1)原子类型:其值不可再分的数据类型
例:char、int、float、double
(2)结构类型:其值可在分解为若干份(分量)的数据类型
struct Customer{
int num;
int people;
……
}
ADT(Abstract Data Type)抽象数据类型----不具体
定义:是指一个数学模型及定义在该模型上的一组操作
包括三个方面:
(1)由用户定义:从具体问题抽象出数学模型(逻辑结构)
(2)数据的运算:定义在此数学模型上的一组抽象操作
(3)不考虑在计算机内的具体存储结构与运算的具体实现
抽象数据类型=逻辑结构+抽象运算
没有存储
算法效率分析
算法定义
研究对象的特性及其相互之间的关系--逻辑结构
有效的组织计算机存储--存储结构
有效的实现对象之间的“运算”关系--算法
算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
时间复杂度
事先预估算法时间开销T(n)与问题规模n的关系(T表示time)
只考虑阶数高的部分
常对幂指阶
空间复杂度
习题
(1)O(1)
(2)O(m*n)
(3)O(n*n)
(4)O(log3n)
(5)O(n*n)
(6)O(根号n)
二
线性表
顺序表
链表
链表的定义
链表的初始化
链表的基本操作
链表的分类
线性表的应用
三
栈与队列概述
栈的表示与实现
队列的表示与实现
栈与队列的应用
习题
四
串
数组
广义表
习题
五
树与二叉树的定义
二叉树的存储与遍历
线索二叉树
树、二叉树、森林的转换
哈夫曼树
习题
六
图的定义和基本术语
图的存储结构
图的遍历
最小生成树
最短路径
拓扑排序与关键路径
习题
七
查找的基本概念
线性表的查找
二叉排序树与平衡二叉树
B树与B+树
红黑树
并查集
散列表
习题
八
排序的基本概念
插入类排序
交换类排序
选择类排序
归并类排序和基数排序
习题
外部排序
原文地址:https://blog.csdn.net/wuyufei_sun/article/details/145107164
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!