当前位置: 首页 > news >正文

【数据结构】

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+树

红黑树

并查集

散列表

习题

排序的基本概念

插入类排序

交换类排序

选择类排序

归并类排序和基数排序

习题

外部排序


http://www.mrgr.cn/news/83678.html

相关文章:

  • 【update 更新数据语法合集】.NET开源ORM框架 SqlSugar 系列
  • typescript语法
  • 计算机网络 笔记 网络层1
  • 【Sql递归查询】Mysql、Oracle、SQL Server、PostgreSQL 实现递归查询的区别与案例(详解)
  • 深入理解 MySQL 的 EXPLAIN 工具
  • Broker如何进行定时心跳发送和故障感知
  • Pandas常用数据类型
  • traceroute原理探究
  • 在线实用工具 json格式化,base64转码,正则表达式测试工具,在线去水印,在线图片压缩,在线图片转为Excel,在线图片拾取颜色
  • 25/1/13 嵌入式笔记 继续学习Esp32
  • 【8】深入理解 Go 语言中的协程-从基础到高级应用
  • 基于Piquasso的光量子计算机的模拟与编程
  • MySQL 与 Redis 的数据一致性问题
  • 网络原理(三)—— 传输层 之 UDP 和 TCP协议
  • STM32之LWIP网络通讯设计-下(十五)
  • day09_kafka高级
  • 【1】Word:邀请函
  • Kotlin面向对象编程之构造函数
  • 【Flink】Flink内存管理
  • Redis持久化双雄
  • 免费获取2025新年跨年春节春晚烟花祝福html+js源码
  • WebGL性能检测
  • 用python实战excel和word自动化
  • halcon三维点云数据处理(十)locate_cylinder_3d
  • Pycharm 使用教程
  • 第 25 场 蓝桥入门赛