C/C++机试高分冲刺——数据结构

系列文章目录

C语言三天入门(N诺)

C语言 — 入门专题(N诺)

C语言 — 提高专题(N诺)

C/C++机试高分冲刺——基础

C/C++机试高分冲刺——数学

C语言机试练习经验总结


 


前言

数据结构不是机试的重点,主要用于优化算法效率。


栈的应用

STL-stack

C语言自定义栈(数组)  

  • 数组
    • 栈顶为0
    • 入栈
      • ++top
    • 出栈
      • top-- 

队列

实现

  • 数组
    • 头和尾

应用

遍历

  • 树型结构或网格结构的数据
    • 用队列实现树的层序遍历
      • 一般是递归遍历
    • 离根结点越近越先遍历到

优先队列(堆)

  • 小根堆
    • 根上的数据最小
  • 大根堆
    • 根上的数据最大
  • 堆实现

二叉树

  • 考试时使用静态的二叉树
  •  二叉排序树(map的底层实现)
#include<bits/stdc++.h>
#include<iostream>
using namespace std;

#define N 100005

struct Node
{
    int  val;
    int l, r;
}tree[N];

void dfs(int root)
{
    //前序遍历
    //printf("%d", tree[root].val);
    if(tree[root].l) dfs(tree[root].l);
    //中序遍历
    //printf("%d", tree[root].val);
    if(tree[root].r) dfs(tree[root].r);
    //后序遍历
    //printf("%d", tree[root].val);

}

 前缀树

  • 不常考
  • 字母数

哈希表(Map实现)

  • 不常考
  • 题目:1645-正方形

搜索

  • 最高频考点之一
  • 最考验代码能力
  • 理解代码

 广度优先搜索

由近及远,像wifi信号 

深度有限搜索

一竿子插到底

迷宫

广度优先搜索

  • 队列实现

深度优先搜索(dfs)

  • 递归

bfs 

图的存储

邻接矩阵

  • 稠密图

邻接表

  • 节省存储空间
  • 稀疏图

最短距离

如果某个节点位于从起点到终点的最短距离路径上,

Dijkstra-迪杰斯特拉算法

  • 基于贪婪算法
  • 从起点出发逐步找到通向终点的路径
    • 从起点出发找到起点临近结点的最短距离
    • 然后一次次向远处延申
  •  最短路径被途径所有结点所共享
  • 和最小生成树中的普利姆算法类似

实现过程

  1. 将所有顶点分为两个集合
    1. 已选顶点集合
    2. 未选顶点集合
  2. 不断更新三个顶点列表,以实现两个集合的转换
    1. 列表一:存储该结点是否已被访问的信息
      1. False-未被访问
      2. Ture-已被访问
    2. 列表二:从起点出发到每个结点的距离信息
    3. 列表三: 存储每个结点被访问时的双亲结点信息
      1. 两个结点确定一条边

Floyd-佛洛依德算法

  • 基于动态规划
  • 通过循环迭代,同时找出任意两个点间的最短距离

图论最短距离(Shortest Path)算法动画演示-Dijkstra(迪杰斯特拉)和Floyd


总结

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值