c++
Adorable_Rocy
把热爱做到极致!
展开
-
数据结构(第九章) - 排序 - 八大排序方法比较
1.插入排序:直接插入排序: for (int i = 1; i < size; i++) { int temp = array[i]; int j = i - 1; for (j = i-1; j >= 0 && array[j] > temp;j--) { array[j + 1] = array[j];原创 2021-12-29 21:37:23 · 518 阅读 · 0 评论 -
C Language 图 - 有向图 && 无向图 术语(十七)
图1.图的定义2. 图的基本术语1.图的定义G=(V,E),V为顶点集,E为边集。设图有n个顶点,V={v1,v2,v3,…,vn}2. 图的基本术语有向图:<v,w>属于E,表示从弧尾v到弧头w的一条弧。无向图:边(v,w)属于E,无向完全图:对简单无向图,图中任意两个不同的定点件都有边。有n个顶点的无向完全图有n(n-1)/2条边。顶点的入度最多为n-1个。有向完全图:对简单有向图,任意两个顶点间都有方向互为相反的两条弧。有n个顶点的有向完全图有n(n-1)条弧原创 2021-12-29 20:57:54 · 738 阅读 · 0 评论 -
C Language 树和二叉树 - 哈夫曼树(十六)
话不多说,直接上车~1.初识哈夫曼树路径:从结点A到E之间路径为:A-C-D-E , 路径长度为3结点带权路径长度:例如A-E之间的路径长度为3,带权路径为WPL(权重*路径长度)=3 * 8 = 24哈夫曼树的研究是什么?在n0个带权叶子结点构成的二叉树中,带权路径长度WPL最小的二叉树成为哈夫曼树(Huffman tree)或最优二叉树。2.创建哈夫曼树(最优二叉树构造法)带权叶子结点如下:构造方法口诀:构造森林全是根在6个根之中,1、5权重是最小的,原创 2021-11-15 11:27:02 · 1271 阅读 · 0 评论 -
C Language 二叉树 - 二叉树的遍历(十五)
层次遍历也是二叉树中的一种遍历方式,说明是从上至下从左至右的遍历方式进行对二叉树的遍历,下面来介绍一下二叉树的层次遍历算法。二叉树如下:原理如下:代码实现起来也就按照原理来书写就变得十分简单啦://环形队列算法遍历void levelOrder(BTNode *bnode){ BTNode *b; SqQueue *qu; initQueue(qu); enQueue(qu,bnode); //A 进队 b = bnode; printf("\n"); while(!Que原创 2021-11-13 15:15:29 · 1657 阅读 · 1 评论 -
C Language 二叉树 - 二叉树的遍历(十四)
二叉树遍历有多种方式,先序、中序、后序、层次遍历四种遍历方式,下面一起来看看吧补充:关于四种遍历方式已经在上一篇文章中给出:Tree和BinaryTree(十三)1.二叉树的递归遍历算法先:ABDHEFCGI中:HDBEFACIG后:HDFEBIGCA有二叉树如下:A(B(D(H),E(,F)),C(,G(I))1.先序遍历//先序输出void PreOrder(BTNode *bnode){ if(bnode!=NULL){ printf("%3c",bnode->da原创 2021-11-13 14:08:20 · 803 阅读 · 0 评论 -
C Language 树 - Tree和BinaryTree(十三)
二叉树(BinaryTree)二叉树的概念是非常的庞大,也是非常的多,小编在此总结完整知识体系二叉树是一个有限的结点集合,这个集合或者为空,或者由一个根节点和两颗互不相交的称左子树和右子树的二叉树组成注意:度为2的树中至少有一个结点的度为2,而二叉树没有这种要求。度为2的树不区分左、右子树,而二叉树是严格区分左、右子树的。在一颗二叉树中,如果所有的分支结点都有左右子树,并且叶子结点都在二叉树的最下层,这样的二叉树称为满二叉树。二叉树性质:非空二叉树的叶子结点数等于双分支结点数加1。原创 2021-11-11 14:49:18 · 967 阅读 · 0 评论 -
C Language 树 - Tree和BinaryTree(十二)
前言:数据结构中的树和二叉树是占着特别大的比重的,树和二叉树不是小编之前介绍的线性结构了,树形结构属于非线性结构,常用的树形就是树和二叉树,线性结构可以表示元素或者多个元素一对一的情况,但是树形结构中,一个节点可以与多个结点相对应,因此是可以表示层次结构的数据如下图是一个简单的三次树概念篇~补充~ 树的表示形式有如下四种:树形表示法文氏图表示法凹入表示法括号表示法A(B(D,E,F),C(G,H))树是 N (N >= 0 )个结点的有限集合,N =原创 2021-11-10 12:01:39 · 1293 阅读 · 0 评论 -
C Language 串 - BF算法&&KMP算法(十一)
因为是BF和KMP算法的讲解,所以这里以顺序串为例讲解。定义顺序串:#define MaxSize 20//定义数字串 typedef struct SqString{ char data[MaxSize]; int length;}SqString;//初始化void initStr(SqString &s){ s.length = 0;} 创建字符串#include<iostream>using namespace std;//创建字符串vo原创 2021-11-08 14:13:13 · 588 阅读 · 0 评论 -
C Language 串 - 链串(十)
链式存储结构大同小异,不再多叙述结构体以及初始化算法://链表结构体typedef struct Snode { char ch; struct Snode *next;} LinkStrNode;//初始化结构体void initSnode(LinkStrNode *&node) { node = (LinkStrNode*)malloc(sizeof(LinkStrNode)); node->next = NULL;}创建链表算法:#define Max原创 2021-11-07 13:34:32 · 175 阅读 · 0 评论 -
C Language 栈和队列 - 顺序队列(七)
前言:最开始的顺序队列中的顺序存储结构设计比较单一,导致出现队列中出现假溢出这样的情况,判断条件为:当front与rear相等时,创建结构体struct SqQueue{ int data[MaxSize]; int fornt,rear;};-初始化队列算法://初始化void initQueue(SqQueue *&s){ s = (SqQueue *)malloc(sizeof(SqQueue)); s->fornt=s->rear=-1; }原创 2021-11-02 09:41:22 · 114 阅读 · 0 评论 -
C Language 栈和队列 - 链栈(六)
链栈和单链表区别是,栈的弹出元素是在头顶弹出,所以后一个元素的next域是前一个元素的地址,所以在入栈的时候格外的注意一下就行创建单链栈:typedef char ElemType;typedef struct linknode { ElemType data; struct linknode *next;} LinkNode;初始化单链栈算法:void initLStack(LinkNode *&s) { s = new LinkNode; s->next==N原创 2021-10-28 14:06:44 · 92 阅读 · 0 评论 -
C Language 栈和队列 - 顺序栈(五)
通过线性表的顺序表和单链表结构后,栈和队列也属于线性表,只不过对于操作有所限制。创建顺序栈struct SqStack { char data[MaxSize]; int top;};初始化顺序栈算法://初始化栈void InitStack(struct SqStack *&s) { s = (SqStack *)malloc(sizeof(SqStack)); s->top = -1;}补充:栈满条件:s->top == MaxSize -原创 2021-10-28 13:22:25 · 217 阅读 · 0 评论 -
C Language 串 - 顺序串(九)
顺序串的应用十分广泛,例如加密解密操作创建结构体以及二维数组#include<stdio.h>#include<stdlib.h>#define ROW 2#define COL 26#define MaxSize 20struct Num { char num[ROW][COL];} num;struct String { char ch[MaxSize]; int length;};//创建二维数组void creatNum(Num &a..原创 2021-10-27 11:37:46 · 121 阅读 · 0 评论 -
C Language 踩坑(最基础的错误..)
小编在创建和输出二维数组的时候犯了个大问题。。就是在输出二维数组的时候没有值了,懵了一段时间后才发现,犯了个很基础的错误。。。创建二维数组#include<stdio.h>#include<stdlib.h>#define ROW 2#define COL 26struct Num { char num[ROW][COL];} num;//创建二维数组void creatNum(Num &num) { int i , j ; char c = 'a原创 2021-10-27 10:47:32 · 116 阅读 · 0 评论 -
C Language 线性表篇 - 顺序表(四)
顺序表和单链表的区别小编使用一个例子来说明吧创建结构体struct SqList { char data[MaxSize]; int length;};创建顺序表算法:struct SqList *CreateList(SqList *&L , int n) { char alphabets[MaxSize] = {'a','b','c','d','e','f','g','h', 'i','j','k','l','m','n',原创 2021-10-21 11:54:21 · 117 阅读 · 0 评论 -
C Language 线性表篇 - 单链表(三)
单链表应用中,删除指定元素,并且打印链表元素内容创建一个指针结构体struct link { char ch; struct link *next;};创建用户输入元素内容算法(CreateByUser)struct link *create() { char ch; struct link *next , *R , *L = NULL; printf("printf char in this scope:\n"); while((ch = getchar()) != '\n原创 2021-10-20 23:44:12 · 118 阅读 · 0 评论 -
C Language 线性表篇 - 单链表(二)
单链表应用中,用户手动输入一串字符,查找字符’x’出现的索引创建指针结构体struct link { char ch; struct link *next;};创建用户输入函数struct link *create() { char ch; struct link *next , *R , *L = NULL; printf("printf char in this scope:\n"); while((ch = getchar()) != '\n') { next =原创 2021-10-20 13:21:47 · 95 阅读 · 0 评论 -
C Language 线性表篇 - 单链表(一)
1、追踪学习,单链表篇单链表中的头插尾插法,其本意是来自于C语言中对于链表的操作,因为主要涉及的是指针的操作,所以简单说一下实现准备一个指针结构体struct Link { int num; struct Link *next;}Link;-创建一个单链表,包含1,2,3,4,5位数struct Link *Create() { int i = 1; struct Link *h = NULL , *s , *r; while(i!=6) { s = (struct Link原创 2021-10-20 11:55:36 · 113 阅读 · 0 评论 -
数据结构-线性表自然连接-应用实验
#define MAXCOL 10#include<stdio.h>#include<malloc.h>#include<stdlib.h>typedef struct Node1{ int data[MAXCOL]; struct Node1 *next;}Dlist;typedef struct Node2{ int Row , Col; Dlist *next;}Hlist;//创建节点链表 void createNode(Hlis原创 2021-10-18 11:26:12 · 813 阅读 · 0 评论