
数据结构
一些数据结构的笔记
Ctrl AC
I'm sorry for everything, everything I've done.
展开
-
【数据结构】内排序小结
“ Ctrl AC!一起 AC!”目录排序码与关键码插入排序直接插入排序二分法插入排序 表插入排序Shell插入排序(希尔排序)选择排序直接选择排序树型选择排序堆排序 交换排序冒泡排序快速排序快速排序归并排序基数排序排序码:以此码作为比较进行排序 关键码:能唯一标识一个记录的字段称为关键码比如(可能不恰当)a b c d 这一序列排序码是它们在字母表中的顺序关键码是它们本身"a" "b" "c" "d"插入排序的基本方法是:将待排序文件中的记录,逐个地按其排序码值的大小插入到目前已经排好序的若干个记录组成的原创 2022-06-24 11:10:09 · 409 阅读 · 0 评论 -
【数据结构】穿线二叉树
“ Ctrl AC!一起 AC!”定义:存储结构:typedef char datatype;typedef struct node{ datatype data; int ltag,rtag; struct node *lchild,*rchild;}binthrnode;typedef binthrnode* binthrtree; 创建中序穿线二叉树:先建立一颗一般的二叉树,然后对其进行中序线索化。binthrtree pre=NULL;binthr.原创 2022-03-29 19:38:30 · 2379 阅读 · 0 评论 -
【数据结构】二叉树的其他运算
“ Ctrl AC!一起 AC!”目录二叉树的查找算法:统计二叉树中结点的个数:判断两个二叉树是否相等:求二叉树的高度:二叉树的查找算法:bintree locate(bintree t,datatype x){ bintree p; if(t==NULL) return NULL; else { if(t->data==x) return t; else{ p=locate(t->lchild,x); if(p) return p原创 2022-03-20 18:08:36 · 1027 阅读 · 0 评论 -
【数据结构】二叉树遍历的非递归实现
“ Ctrl AC!一起 AC!”目录二叉树结点数据结构:定义一个顺序栈及其操作:前序遍历的非递归实现:中序遍历的非递归实现:后序遍历的非递归实现:非递归主要依靠用一个栈记录回溯点,进行回溯。二叉树结点数据结构:typedef char datatype;typedef struct node{ datatype data; struct node *lchild,*rchild;}bintnode;typedef bintnode *bintree;b原创 2022-03-18 17:25:20 · 1222 阅读 · 0 评论 -
【数据结构】二叉树遍历的递归实现
“ Ctrl AC!一起 AC!”目录数据结构定义:前序遍历二叉树递归算法:中序遍历二叉树递归算法:后序遍历二叉树递归算法:根据前序遍历以及附带信息建立二叉树:数据结构定义:typedef char datatype;typedef struct node{ datatype data; struct node *lchild,*rchild;}bintnode;typedef bintnode *bintree;bintree root; 前序遍历二叉原创 2022-03-17 18:51:45 · 1146 阅读 · 0 评论 -
【数据结构】二叉树的顺序存储与链式存储
“ Ctrl AC!一起 AC!”1.完全二叉树的顺序存储:一个数组即可解决,i/2向下取整为其父结点,2*i,2*i+1为其左右孩子。#define MAXSIZE 20typedef char datatype;datatype tree[MAXSIZE];int n; //树中实际所含结点 2.一般二叉树的顺序存储:#define MAXSIZE 20typedef char datatype;typedef struct{ datatype data; int原创 2022-03-16 13:53:20 · 1545 阅读 · 0 评论 -
【数据结构】树的线性表示
“ Ctrl AC!一起 AC!”目录1.树的括号表示:特点:将括号表示法转化成孩子表示法:代码实现:2.树的层号表示:概述:将层号表示转换成树的孩子表示(扩充版):1.树的括号表示:特点:"("前面的一定是某颗树的根节点 “( )”之间的结点是上述根节点的子结点将括号表示法转化成孩子表示法:代码实现:#define m 3 //自定义树的度数,决定孩子表示法的结点的孩子最大个数 #define MAXSIZE 20 //树的孩...原创 2022-03-15 21:14:20 · 1466 阅读 · 0 评论 -
【数据结构】树的遍历
“ Ctrl AC!一起 AC!”目录树有三种表示方法:树的遍历有三种:结点结构:树的前序遍历递归版:树的后序遍历递归版:按前序遍历顺序建立一颗树:树的层次遍历:树有三种表示方法:双亲表示法,孩子表示法和兄弟表示法。这里我们使用指针式的孩子表示法。树的遍历有三种:前序遍历,后序遍历,层序遍历(二叉树还有中序遍历)结点结构:#define m 3 //m指树的度typedef char datatype;typedef struct nod原创 2022-03-14 21:28:00 · 2036 阅读 · 0 评论 -
【数据结构】稀疏矩阵的链式存储(十字链表)
“ Ctrl AC!一起 AC!”目录稀疏矩阵的十字链表表示:十字链表中结点的结构:创建稀疏矩阵的十字链表表示:稀疏矩阵十字链表的查找:稀疏矩阵的十字链表表示:每一行的非零元素构成一个带表头的环形链表 每一列的非零元素构成一个带表头的环形链表 第i行和第i列的表头是同一个 所有表头结点构成一个新的带表头的环形链表因此:十字链表的表示中有非零元素结点和表头结点两类结点其中表头结点的row,col均为零,表头结点构成的环形链表的表头的row和col分.原创 2022-03-13 17:57:13 · 15435 阅读 · 0 评论 -
【数据结构】稀疏矩阵的顺序存储(三元组)
三元组:a[n][3]第0行:总行数,总列数,非零元素个数第i行:表示第i个元素的行,列,及其值原创 2022-03-12 18:19:34 · 5247 阅读 · 0 评论 -
【数据结构】字符串之链式串
“ Ctrl AC!一起 AC!”目录结点的定义:创建字符串:插入:删除:连接:截取子串操作:字符串的链式存储称为链式串结点的定义:typedef struct node{ char data; struct node *next;}linkstrnode;typedef linkstrnode *linkstring;创建字符串:void strcreate(linkstring *S){ char ch; linkstrnode原创 2022-03-11 12:39:33 · 1679 阅读 · 0 评论 -
【数据结构】字符串之顺序串
“ Ctrl AC!一起 AC!”目录结构描述:插入操作:删除操作:连接操作:求子串操作:字符串的顺序存储称为顺序串。结构描述:#define MAXSIZE 100typedef struct{ char str[MAXSIZE]; int length;}seqstring;插入操作:void strinsert(seqstring *S,int i,seqstring T){ //将T插入到S从i开始的地方 int k; if(i&l原创 2022-03-10 19:09:41 · 511 阅读 · 0 评论 -
【数据结构】链式队列
“ Ctrl AC!一起 AC!”目录链式队列结构:建立一个空的链式队列:判断链式队列是否为空:输出链式队列中各个结点的值:取得链式队列的队首结点值:链式队列的插入操作:链式队列的删除操作:队列的链式存储称为链式队列。链式队列的队首和队尾指针分别用front和rear表示。链式队列结构:typedef int datatype;typedef struct link_node{ datatype info; struct link_node *next原创 2022-03-09 14:06:35 · 1238 阅读 · 0 评论 -
【数据结构】链式栈
“ Ctrl AC!一起 AC!”目录建议一个空的链式栈:判断链式栈是否为空:取得链式栈的栈顶结点值:输出链式栈中各个结点的值:插入:删除:栈的链式存储称为链式栈,链式栈的栈顶指针一般用top表示建议一个空的链式栈:node *init(){ return NULL;}判断链式栈是否为空:int empty(node *top){ return (top?1:0);}取得链式栈的栈顶结点值:datatype read(node *原创 2022-03-08 18:36:30 · 644 阅读 · 0 评论 -
【数据结构】双链表
“ Ctrl AC!一起 AC!”目录双链表结构:建立一个空的双链表:输出双链表中各个结点的值:查找双链表中第i个结点:双链表的插入操作:双链表的删除操作:双链表的特点是每个结点都有指向前驱结点和后继结点的指针域双链表结构:typedef int datatype;typedef struct dlink_node{ datatype info; struct dlink_node *llink,*rlink;};建立一个空的双链表:dnode *原创 2022-03-07 18:01:09 · 802 阅读 · 0 评论 -
【数据结构】循环单链表
“ Ctrl AC!一起 AC!”目录单链表结构:建立一个空的循环队列:获得循环单链表的最后一个结点的存储地址:输出循环单链表中各个结点的值:在循环单链表中查找一个值为x的结点:循环单链表插入操作:循环单链表的删除操作:循环单链表的特点是最后一个结点p :p->next=head;从而构成一个环单链表结构:typedef int datatype;typedef struct link_node{ datatype info; struct原创 2022-03-06 19:04:18 · 2346 阅读 · 0 评论 -
【数据结构】前缀表达式求值 · 中缀转后缀 · 后缀表达式求值
“ Ctrl AC!一起 AC!”前缀表达式求值:#include<bits/stdc++.h>using namespace std;char s[100];double scan(){ cin>>s; if(s[0]>='0'&&s[0]<='9'){ return atof(s); } else{ if(s[0]=='+') return scan()+scan(); else if(s[0]=='-') retu原创 2022-03-04 21:53:17 · 686 阅读 · 0 评论 -
S10_笔记(最小生成树及相关算法,拓扑排序)
“ Ctrl AC!一起 AC!”最小生成树概述:Prim算法Kruskal算法拓扑排序优化:感谢阅读!!!“ Ctrl AC!一起 AC!”原创 2022-02-03 22:46:02 · 395 阅读 · 0 评论 -
S9_笔记(图的建立)
“ Ctrl AC!一起 AC!”图的建立用邻接矩阵表示图:typedef struct GNode *PtrToGNode;struct GNode{ int Nv; //顶点数 int Ne; //边数 WeightType G[MaxVertexNum][MaxVertexNum]; //DataType Data[MaxVertexNum] /*存顶点*/};typedef PtrToGNode MGraph;初始化一个有VertexNum个顶点但没有边的图.原创 2022-02-02 11:10:55 · 266 阅读 · 0 评论 -
S8_笔记(图的基本概念)
图概述:抽象数据类型:常见术语:数值指权重,构成网络邻接矩阵:优化:原创 2022-02-02 10:10:19 · 389 阅读 · 0 评论 -
S7_笔记(堆,哈夫曼树,最大堆,集合)
堆概述:最大堆抽象数据类型描述:创建:typedef struct HeapStruct* MaxHeap;struct HeapSturct{ ElementType* Elements; int Size; int Capacity;};MaxHeap Create(int MaxSize){ MaxHeap H=malloc(sizeof(struct HeapStruct)); H->Elements=malloc((MaxSize+1)*si原创 2022-01-27 10:45:59 · 696 阅读 · 0 评论 -
S6_笔记(二叉搜索树,平衡二叉树)
二叉搜索树概述:一般操作:1.查找操作:Position IterFind(ElementType X,BinTree BST){ while(BST){ if(X>BST->Data){ BST=BST->Right; } else if(X<BST->Data){ BST=BST->Left; } else return BST; } return NULL;}2.查找最大最小值:P.原创 2022-01-25 23:01:25 · 486 阅读 · 0 评论 -
S5_笔记(树,二叉树)
树概述查找概述原创 2022-01-20 22:32:36 · 384 阅读 · 0 评论 -
S4_笔记(队列,线性结构应用实例)
“ Ctrl AC!一起 AC!”目录队列定义抽象数据类型描述顺序存储顺序存储主要操作链式储存链式储存主要操作线性结构应用实例一元多项式加法运算一元多项式乘法运算链表反转队列定义定义描述:特点:先进先出。抽象数据类型描述顺序存储1.主要实现方式:2.代码描述:struct QNode { ElementType Data[MaxSize]; int rear; int front;};typ.原创 2022-01-16 16:52:00 · 407 阅读 · 0 评论 -
S3_笔记(堆栈)
“ Ctrl AC!一起 AC!”目录堆栈引子特点抽象数据类型描述顺序储存顺序存储主要操作链式存储链式存储主要操作堆栈求算术表达式堆栈引子计算机对算术表达式的求值计算机将中缀表达式变成后缀表达式,再求值这里的储存方法就是堆栈特点先入的后出,后入的先出抽象数据类型描述顺序储存1.主要实现方式:2.代码描述:#define MaxSizetypedef struct SNode* Stack;..原创 2022-01-16 10:49:21 · 172 阅读 · 0 评论 -
S2_笔记(线性表,广义表,多重链表)
“ Ctrl AC!一起 AC!”目录线性表定义抽象数据结构类型描述顺序储存顺序储存主要操作链式储存链式储存主要操作广义表定义代码实现多重链表线性表定义抽象数据结构类型描述顺序储存主要实现方式:利用数组的连续储存空间顺序存放线性表的各元素。代码描述:struct LNode { ElementType Data[MAXSIZE]; int Last;//Last是指向线性表最后的一个元素的下标};typede..原创 2022-01-15 23:20:49 · 198 阅读 · 0 评论 -
S1_笔记(数据结构,抽象数据类型,算法的概念)
“ Ctrl AC!一起 AC!”数据结构的引入:解决问题方法的效率与数据的组织方式、空间的利用效率和算法的巧妙程度是相关的。数据结构的定义:数据结构是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,并确保经过这些运算以后所得到的新结构仍保持原来的结构类型。抽象数据类型:抽象:不依赖于具体的实现,与存放的机器无关,与算法和编程语言无关。数据类型:包括数据对象集和数据集合相.原创 2021-12-31 22:45:28 · 340 阅读 · 0 评论