51CTO博客开发
静态查找表:只作查找操作的查找表(顺序查找、折半查找) 动态查找表:在查找过程中,同时插入新元素或删除旧元素(二叉排序树) 1.顺序查找表 int SequentialSearch(int *a,int n,int key){ int i; &nb
#define MAXVEX 100 typedef struct EdgeNode{//边表结点结构 int adjvex;//存储该结点在数组中的下标 int weigh
#define MAXVEX 9 #define INFINITY 65535 typedef int Patharc[MAXVEX];//数组值为数组下标的前驱结点下标 typedef int ShortPathTable[MAXVEX];//存储到各个结点的
最小生成树: n个顶点,用n-1条边把一个连通图连接起来,并且使得权值和最小。 /* *1.初始化两个数组,一个用于存放边权值,一个用来存放边权值的起始点 *2.赋初值,从0开始,所有边权值都是和v0相关,所有边权值的起始点都是v0 *3.大循环1到MG.numVertexes-1次 *4.遍历边权值数组,找当前数组中
/*******************************************************************************/ bool visited[MAXVEX];//访问标识数组 void DFS(MGraph MG,int i){//邻接矩阵的深度优先递
一.邻接矩阵 图的邻接矩阵:用两个数组来表示图。一个一维数组存储图中的顶点信息,一个二维数组用来存储图中的边或弧的信息。 1. 主对角线全为0,因为不存在顶点到自身的值 2. 无向图的边数组是一个对称矩阵 3. 求顶点的度,如Vi的度,在邻接矩阵中第i行(第i列)的元素之和 4. 求顶点的邻接点,如vi的邻接点,扫描第i行,arc[i][j]为1就是邻接点 &n
图:由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为G(V,E),G表示图,V是图中顶点的集合,E是图中边的集合。 无向边:顶点Vi和Vj之间的边没有方向,则称这条边是无向边,用无序偶对(Vi,Vj)或(Vj,Vi)表示,如果图中所有顶点之间的边都是无向边,则称该图为无向图。 有向边:从顶点Vi到Vj的边有方向,则称这条边有方向,写为<Vi,Vj>,也称为弧,Vi成为弧尾,V
树转换为二叉树 1.所有兄弟结点之间加线 2.只保留与第一个孩子结点的连线,删除它与其他孩子子结点之间的连线 3.层次调整,孩子是左节点,兄弟是右结点 森林转换为二叉树 1.分别处理每棵树,将它们转换成二叉树 2.第一棵二叉树不变,从第二棵二叉树开始,后面的根结点依次是前面的兄弟结点,即右孩子 二叉树转换为树 1.如果某结点的左孩子结点存在,则将这个左孩子的右孩子、右孩子的右孩子.
之后补上
#include<stdio.h> #include<string.h> #include<stdlib.h> #define MAXSIZE 100 /*******************************************************************
二叉树定义: n个结点的有限集合,该集合或者为空集,或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。 满二叉树 所有分支结点(非叶子结点)都有左子树和右子树,并且所有叶子都在同一层上,这样的二叉树成为满二叉树。叶子只出现在最下一层;非叶子结点的度一定是2;同样深度的二叉树中,满二叉树的结点数和叶子数最多。
树的定义: 使用递归定义方法。有n个结点(n>=0)的有限集。n=0时成为空树。任一个非空树有且只有一个根节点。n>1时,其余结点可以分为m个互不相交的有限集,其中每个子集又是一个树,称为根的子树。 度的定义 结点的子树个数称为结点的度,树的度是所有结点的度的最大值。 层的定义 根结点开始为第
借助字符串函数的朴素算法 #include<stdio.h> #include<string.h> #define MAXSIZE 50 int index(char s1[],char s2[],int pos); int main(void){
typedef int ElemType; typedef struct QNode{ ElemType data; Struct QNode *next; }QNode,*pQ
队列: 只允许在一端进行插入操作,另一端进行删除操作的线性表 循环队列: 队列的头尾相接的顺序存储结构称为循环队列 front指向第一个元素,rear指向最后一个元素的下一个位置 队空front==rear 队空和队满的时候条件是一样的,我们有两种
#include<stdio.h> #include<string.h> #include<ctype.h> #define MAXSIZE 40 /***************************************************************
#include<stdio.h> #include<string.h> #include<ctype.h> #include<stdlib.h> #define MAXSIZE 30 typedef int ElemTy
迭代: #include<stdio.h> int main(void){ int a1 = 0; int a2 = 1; &nbs
typedef struct StackNode{ ElemType data; StackNode *next; }StackNode,*LinkStackPtr; typedef 
结构 #define MAXSIZE 20 typedef int SElemType; typedef struct { SElemType data[MAXSIZE]; &nb
栈的定义 限定仅在表尾进行插入和删除操作的线性表 栈的顺序存储结构 #define MAXSIZE 20 typedef int SElemType; typedef struct{ SElemType&n
循环链表 最后一个元素的指针域不是空,而是指向了头结点。 //判断表空由 L->next == NULL; //变为 L->next == L; //判断表尾由 p->next == NULL; //变为 p
静态链表结构: 我们对数组的第一个和最后一个元素做特殊处理,不存数据。第一个元素的cur存放备用链表的第一个结点的下标,最后一个元素存放含有值的第一个元素的下标,相当于头结点的作用。 当链表为空时,最后一个下标的cur为0 当链表满了时,第一个下标的cur为MAXSIZE-1,即指向最后一个单元的地址 #define MAXSIZE 1000 ty
头指针和头结点 头指针:指向链表第一个结点的指针,若链表有头结点,则指向投结点;头指针有标识作用,所以常使用头指针冠以链表的名字;无论链表是否为空,头指针肯定存在,这是必要因素。 头结点:放在第一个结点之前,数据域无特殊意义;对第一个结点的前插入和删除就与其他结点统一了;头结点不是必要因素。 结构: typedef struct Node{ &nb
线性表的顺序存储结构: 用一段地址连续的存储单元依次存储线性表中的数据元素 #define MAXSIZE 20//数组的长度 typedef int ElemType; typedef struct{ &nb
线性表: 0个或者多个数据元素的有限序列。 线性表的抽象数据结构: ADT xianxingbiao (List) Data Operation &nb
算法定义:解决特定问题的求解步骤的描述,在计算机中表现为指令的有限序列,每条指令表示一个或多个操作。 算法的特性: 输入输出:输入0或多,输出1或多 有穷:执行有限的步骤,可以自动结束,可接受时间 可行:每一步都能通过执行有限次数完成 确定:只有一条执行路径,不会有二义性 算
数据结构(学科定义):研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。 数据:描述客观事物的符号,可以被计算机识别并输入计算机中处理的符号集合。例如数值、字符、视频、图像等。(人类) 数据元素:组成数据的单位(人类这个群体中的人类个体) 数据项:不可再分的最小单位,组成数据元素(人的五官、身份选项等) 数据对象:性质相同的数据元素的集合,是数据的子集。(
#include<stdio.h> void convertToBinary(char *psNumber,int number); void showBinary(char *psNumber); int numberReverse(int numbe
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号