数据结构与算法
无
暮w光
这个作者很懒,什么都没留下…
展开
-
数据结构——查找
查找1.线性表查找涉及算法:顺序查找、二分查找、分块查找//顺序查找,n为数组a的长度int SequenceSearch(int a[], int value, int n){ int i; for(i=0; i<n; i++) if(a[i]==value) return i; return -1;}//二分查找(折半查找),一般方法,n为数组a的长度int BinarySearch1(int a[], int va原创 2022-03-01 22:17:04 · 376 阅读 · 0 评论 -
数据结构—排序
排序1.插入排序:主要包括直接插入、折半插入、希尔排序// 分类 ------------- 内部比较排序// 数据结构 ---------- 数组// 最差时间复杂度 ---- 最坏情况为输入序列是降序排列的,此时时间复杂度O(n^2)// 最优时间复杂度 ---- 最好情况为输入序列是升序排列的,此时时间复杂度O(n)// 平均时间复杂度 ---- O(n^2)// 所需辅助空间 ------ O(1)// 稳定性 ------------ 稳定 #include <stdio原创 2022-03-01 22:16:55 · 227 阅读 · 0 评论 -
数据结构—图
图涉及到的算法有:深度优先搜索、广度优先搜索、邻接矩阵/邻接表创建无向网、普里姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法、拓扑排序、关键路径1.DFS:bool visited[MAX_VERTEX_NUM]; //访问标记数组/*从顶点出发,深度优先遍历图G*/void DFS(Graph G, int v){ int w; visit(v); //访问顶点 visited[v] = TRUE; //设已访问标记 //FirstNeighbor(G,v):求图G中顶点v的第一个原创 2022-02-22 11:29:41 · 719 阅读 · 0 评论 -
二叉树&线索二叉树算法与森林
1.二叉树常见算法为:前/中/后序遍历二叉树(递归、非递归)及建立二叉链表、建立二叉树、层次遍历、复制二叉树、计算二叉树深度、统计二叉树节点等1)#include <iostream>#include <cstdlib> using namespace std; // 二叉树链表的存储结构typedef struct BiTNode{ char data; struct BiTNode *lchild, *rchild;}BiTNode, *BiTree;原创 2022-02-20 18:40:13 · 442 阅读 · 0 评论 -
数据结构—哈夫曼树
哈夫曼树与哈夫曼编码:1.常见算法为:构造哈夫曼树描述:void CreatHuffmanTree(HuffmanTree &HT, int n){ //构造赫夫曼树HT int m, s1, s2, i; if (n <= 1) return; m = 2 * n - 1; HT = new HTNode[m + 1]; // 0号单元未用,所以需要动态分配m+1个单元,HT[m]表示根结点 for (i = 1; i <= m; ++i) // 将1原创 2022-02-20 18:32:56 · 875 阅读 · 0 评论 -
树和二叉树
1.树的定义 树的定义:树(Tree)是n(n≥0)个结点的有限集,它或为空树(n = 0);或为非空树,对于非空树T: (1)有且仅有一个称之为根的结点;(2)除根结点以外的其余结点可分为m(m>0)个互不相交的有限集T1, T2, …, Tm, 其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。2.树的基本术语 根:即根结点(没有前驱)叶子:即终端结点(没有后继)森...转载 2022-02-20 18:06:50 · 1257 阅读 · 0 评论 -
串(BF、KMP算法)
1.BF算法:int BF(string& maistr, string& substr,int pos=0){ int mailen = maistr.size(); int sublen = substr.size(); int i = pos; int j = 0; if (pos >= mailen) return -1; if (mailen < sublen) return -1; if (mailen == 0 || sublen == 0) re转载 2022-02-15 11:39:06 · 117 阅读 · 0 评论 -
栈和队列(数据结构)
栈1.顺序栈:顺序栈操作包括:初始化、入栈、出栈、判断是否为空、求顺序栈长度、清空栈、销毁栈、取栈顶元素。#include <iostream> using namespace std; #define MAX 100 //顺序栈的定义 typedef struct { int *base; int *top; int stacksize;}SqStack; //初始化int InitStack(SqStack &S) { S.base = ne原创 2022-02-14 10:10:36 · 459 阅读 · 0 评论 -
图书管理系统(数据结构)
#include <stdio.h>#include <stdlib.h>#include <string.h> //头文件 #define OK 1#define ERROR 0#define OVERFLOW -1#define LIST_INIT_SIZE 50#define LISTINCREMENT 10 //宏定义,即定义常量 typedef int status;typedef struct { char..转载 2022-02-12 17:08:55 · 5324 阅读 · 5 评论 -
数据结构——循环链表与双链表
循环链表概念:表中最后一个节点的指针域指向头结点,整个链表形成一个环。循环单链表 与 双向循环链表的操作(初始化、插入、删除、判断是否为空等)://带头结点的循环单链表typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*Linklist;bool Initlist(Linklist &L){ L=(LNode *)malloc(sizeof(LNode)); //分配一个头结点,且不存储任何数据 if(L原创 2022-02-12 15:14:02 · 630 阅读 · 0 评论 -
数据结构---单链表
单链表1.顺序表与单链表区别:不同于顺序表的逻辑结构与存储结构对应相邻,单链表采用的是顺序存取的方式,按照节点逐一存储。其逻辑上相邻,存储上并不一定相邻,而是有节点中的指针域指向下一节点。2.单链表操作:操作包括:初始化、判断是否为空、销毁、清空、求表长、取值、查找、插入、删除、头(尾)插法创建表c语言表示:#include<iostream> using namespace std; //单链表的存储结构typedef struct LNode { int data;原创 2022-02-10 17:23:04 · 713 阅读 · 0 评论 -
数据结构---顺序表(2)
顺序表操作基本操作为:初始化、销毁、清空、获取长度、判断是否为空、取值、查找、插入、删除。c语言实现:#include<iostream> using namespace std; #define MAX 100 typedef struct Sq { int *elem; int length;}SqList; // 初始化表int InitSqList(SqList &L){ L.elem = new int[MAX]; if (!L.elem)原创 2022-02-09 15:11:52 · 1678 阅读 · 1 评论 -
数据结构---顺序表(1)
顺序表定义线性表类型模板:#define LIST_INIT_SIZE 100 //线型表存储空间的初始分配量,可修改typedef struct{ //结构 ElemType elem[LIST_INIT_SIZE]; //elemtype元素类型也可与根据具体而修改 int length; //当前长度}SqList; //顺序表的结构类型定义://--------顺序表的存储结构----#define MAX 100 //顺序表可能达到的最大长度 ty原创 2022-02-08 13:08:06 · 596 阅读 · 0 评论 -
数据结构与算法C语言版—绪论
1.基本概念和术语 1、数据(data):所有能输入到计算机中去的描述客观事物的符号 数值性数据非数值性数据(多媒体信息处理)2、数据元素(data element):数据的基本单位,也称结点(node)或记录(record)3、数据项(data item):有独立含义的数据最小单位,也称域(field) 三者之间的关系:数据 > 数据元素 > 数据项 例:学生表 > 个人记录 >  ...转载 2022-02-07 09:58:40 · 471 阅读 · 0 评论 -
java学习(一)---打印乘法表与三角
1.九九乘法表(格式一)://javapublic class ForDemo03 { public static void main(String[] args) { for (int j = 1;j <= 9;j++) { for (int i = 1; i <= j; i++) { System.out.print(j + "*" + i + "=" + (i * j) + "\t");原创 2022-02-06 15:26:09 · 1741 阅读 · 0 评论 -
【功防世界】base64stego
1.首先zip伪加密破解密码:2.打开文件看到很多行base64,U3RlZ2Fub2dyYXBoeSBpcyB0aGUgYXJ0IGFuZCBzY2llbmNlIG9mIHdyaXRpbmcgaGlkZGVuIG1lc3NhZ2VzIGluIHN1Y2ggYSB3YXkgdGhhdCBubyBvbmV=LCBhcGFydCBmcm9tIHRoZSBzZW5kZXIgYW5kIGludGVuZGVkIHJlY2lwaWVudCwgc3VzcGU=Y3RzIHRoZSBleGlzdGVuY2Ugb原创 2021-12-23 20:01:27 · 638 阅读 · 0 评论