数据结构
小白Melody
这个作者很懒,什么都没留下…
展开
-
数据结构——寻找二叉树最近的公共祖先(C语言)
二叉树采用顺序表存储根节点下标从1开始。则a结点的祖先结点的下标为[a/2](取下界)#include<stdio.h>#include<stdlib.h>#define MaxVertexNum 100#define ElemType int#define VertexType intvoid FindSameGradeparents(int num[],int n,int a,int b){ int index1=-1,index2=-1; fo.原创 2020-11-23 21:58:53 · 2411 阅读 · 1 评论 -
数据结构——二叉排序树的判断(C语言)
二叉排序树的判断1.判断条件:左 < 中 < 右2.递归判断左右子树3.递归结束条件:该结点为叶子结点建树方式(先序)列子:AB#D##C###include<stdio.h>#include<stdlib.h>#include<queue>#include <iostream>#define MAXSIZE 10010#define ElemType intusing namespace std;typedef.原创 2020-11-23 21:27:55 · 1955 阅读 · 0 评论 -
数据结构——邻接矩阵转邻接表(C语言)
将无向图的邻接矩阵存储转换为对应的邻接表存储思路:遍历邻接矩阵,将有各个顶点关联的边所对应的顶点存储到邻接表所对应的顶点表的边表上,并连接起来。#include<stdio.h>#include<stdlib.h>#define MaxVertexNum 100#define ElemType int#define VertexType inttypedef struct{//邻接矩阵存储 ElemType Vertices[MaxVertexNum]; .原创 2020-10-09 15:59:56 · 6791 阅读 · 7 评论 -
数据结构——邻接矩阵的创建(C语言)
#include<stdio.h>#include<stdlib.h>#define MaxVertexNum 100#define ElemType int#define VertexType inttypedef struct{//邻接矩阵存储 ElemType Vertices[MaxVertexNum]; //顶点信息的数组 ElemType Edge[MaxVertexNum][MaxVertexNum]; //边信息的数组 ElemTy原创 2020-10-08 19:57:15 · 1520 阅读 · 1 评论 -
数据结构——平衡二叉树的判断【递归算法】(C语言)
平衡二叉树的判断(左右子树的高度差只能为-1,0,1)#include<stdio.h>#include<stdlib.h>#include<queue>#include <iostream>#define MAXSIZE 10010#define ElemType intusing namespace std;typedef struct BTNode{ ElemType data; BTNode *lchild,*.原创 2020-10-08 15:35:38 · 933 阅读 · 0 评论 -
数据结构——完全二叉树的判断【非递归算法】(C语言)
完全二叉树的判断下面给出两个列子(序号只是为了输入方便,并不代表完全二叉树的编号顺序)其中,列1为非完全二叉树【高度差大于2】,列2为完全二叉树。#include<stdio.h>#include<stdlib.h>#include<queue>#include <iostream>#define MAXSIZE 10010#define ElemType intusing namespace std;typedef struct .原创 2020-10-08 15:06:55 · 2411 阅读 · 0 评论 -
数据结构——二叉树交换左右子树位置(C语言)
交换二叉树的左右子树#include<stdio.h>#include<stdlib.h>#include<queue>#include <iostream>#define MAXSIZE 10010#define ElemType intusing namespace std;typedef struct BTNode{ ElemType data; BTNode *lchild,*rchild;}*BTree;/.原创 2020-10-08 13:14:16 · 4283 阅读 · 1 评论 -
数据结构——二叉树的宽度【非递归算法与层次遍历】(C语言)
层次遍历与树的宽度非递归算法求解#include<stdio.h>#include<stdlib.h>#include<queue>#include <iostream>#define MAXSIZE 10010#define ElemType intusing namespace std;typedef struct BTNode{ ElemType data; BTNode *lchild,*rchild;}*BT.原创 2020-10-08 11:34:23 · 1535 阅读 · 0 评论 -
数据结构——二叉树深度【递归算法】(C语言)
-二叉树的深度与宽度的计算(递归版本)#include<stdio.h>#include<stdlib.h>#include<math.h>#define MAXSIZE 10010#define ElemType inttypedef struct BTNode{ ElemType data; BTNode *lchild,*rchild;}*BTree;//先序建树BTree CreateTree(){ ElemType原创 2020-10-07 16:48:46 · 2244 阅读 · 7 评论 -
数据结构——二叉树的基本操作【先序创建与(先/中/后)序遍历】(C语言)
二叉树的创建与遍历#include<stdio.h>#include<stdlib.h>#define MAXSIZE 10010#define ElemType inttypedef struct BTNode{ ElemType data; BTNode *lchild,*rchild;}*BTree;//先序建树BTree CreateTree(){ ElemType ch; printf("输入结点元素值:"); .原创 2020-10-07 15:22:10 · 554 阅读 · 1 评论 -
数据结构——单词逆序算法(C语言)
单词逆序算法#include<stdio.h>#include<stdlib.h>#define MAXSIZE 10010#define ElemType intvoid InitString(char s1[MAXSIZE]){ scanf("%s",s1);}int getLength(char s1[MAXSIZE]){ int length=0,index=0; while(s1[index++]!='\0'){ .原创 2020-10-07 13:39:16 · 591 阅读 · 0 评论 -
数据结构——回文串判断(C语言)
回文串判断#include<stdio.h>#include<stdlib.h>#define MAXSIZE 10010#define ElemType intvoid InitString(char s1[MAXSIZE]){ scanf("%s",s1);}void CheckIsSyn(char s1[MAXSIZE],int length){ //此处判断需要注意 //错误示例: //int i=0,j=length.原创 2020-10-07 12:35:38 · 4791 阅读 · 0 评论 -
数据结构——两个栈模拟实现一个队列(C语言)
两个栈模拟实现一个队列实现思路:入栈时存储元素进入栈1,出栈时,将栈1中所有元素取出并放入栈2中,这样栈1中的元素就进行了逆置,即实现了与输入顺序相同。比如:入栈元素顺序:1,2,3,4,5那么此时栈1中元素自上而下顺序为:5,4,3,2,1栈2元素为空。出栈时,将栈1中元素依次取出放入栈2此时栈2中元素自上而下顺序为:1,2,3,4,5(即保证了与输入顺序相同)栈1元素为空#include<stdio.h>#include<stdlib.h>#define .原创 2020-10-06 21:40:00 · 2037 阅读 · 0 评论 -
数据结构——顺序栈的基本操作(C语言)
顺序栈的基本操作1.进栈2.出栈3.判空4.获取栈顶元素#include<stdio.h>#include<stdlib.h>#define MAXSIZE 50#define ElemType inttypedef struct{ ElemType data[MAXSIZE]; int top;}SeqStack;void InitStack(SeqStack *s){ s->top=-1;}bool StackEmpty.原创 2020-10-06 20:44:03 · 355 阅读 · 0 评论 -
数据结构——双向循环链表(C语言)
1.双向循环链表的创建2.双向循环链表的插入3.双向循环链表的删除4.遍历双向循环链表#include<stdio.h>#include<stdlib.h>#define MAXSIZE 10010#define ElemType inttypedef struct DuLNode{ ElemType data; struct DuLNode *prior,*next;}DuLNode,*DuLinkList;//创建双向循环链表DuLin.原创 2020-10-05 18:51:23 · 386 阅读 · 0 评论 -
数据结构——两个有序顺序表的合并(C语言)
-将两个非递减有序顺序表A和B合并成一个新的非递减有序表C#include<stdio.h>#include<stdlib.h>#define MAXSIZE 10010#define ElemType inttypedef struct{ ElemType data[MAXSIZE]; int length;}SeqList;void InitList(SeqList &l){ l.length=0;}void CreateList原创 2020-10-05 18:49:47 · 13525 阅读 · 6 评论 -
数据结构——折半查找【递归,非递归,元素插入】(C语言)
二分查找(折半查找)#include<stdio.h>#include<stdlib.h>#define MAXSIZE 10010int RecurSearch(int A[],int low,int high,int key){ int flag=0; while(low<=high){ int mid=(low+high)/2; if(A[mid]==key){ printf("元素下标为.原创 2020-10-05 18:49:17 · 556 阅读 · 0 评论 -
数据结构——单链表(C语言)
1.头插法创建两个升序单链表2.使用两个单链表来合并两个单链表并按从大到小顺序排列3.结果打印4.在合并链表中查找指定的值5.求表长6.删除指定值7.指定位置插入值#include<stdio.h>#include<stdlib.h>typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;LinkList initLinkList(){ LNode* h.原创 2020-10-05 18:48:46 · 135 阅读 · 0 评论 -
数据结构——顺序表(C语言)
数据结构——顺序表基本操作(C语言)1.初始化2.创建3.插入4.删除5.按值查找6.打印#include<stdio.h>#include<stdlib.h>#define MAXSIZE 10010#define ElemType inttypedef struct { ElemType data[MAXSIZE]; int length;}SeqList;//顺序表初始化bool InitList(SeqList *l){原创 2020-10-05 18:48:17 · 226 阅读 · 0 评论 -
数据结构——有序单链表原地合并(C语言)
将两个有序单链表进行合并,合并结果仍有序。(合并过程不占用其他存储空间)#include<stdio.h>#include<stdlib.h>#define MAXSIZE 10010#define ElemType inttypedef struct LNode{ ElemType data; LNode *next;}LNode,*LinkList;//创建LinkList initLinkList(int num){ LNode* h.原创 2020-10-05 18:47:42 · 614 阅读 · 0 评论 -
数据结构——查找链表倒数第K个位置结点(C语言)
查找链表倒数第K个位置结点#include<stdio.h>#include<stdlib.h>#define MAXSIZE 10010#define ElemType inttypedef struct LNode{ ElemType data; LNode *next;}LNode,*LinkList;//创建LinkList initLinkList(int num){ LNode* head=(LNode *)malloc(siz.原创 2020-10-05 18:47:10 · 610 阅读 · 0 评论 -
数据结构——单链表原地逆置(C语言)
单链表原地逆置#include<stdio.h>#include<stdlib.h>#define MAXSIZE 10010#define ElemType inttypedef struct LNode{ ElemType data; LNode *next;}LNode,*LinkList;//创建LinkList initLinkList(int num){ LNode* head=(LNode *)malloc(sizeof(LN.原创 2020-10-05 18:46:27 · 646 阅读 · 0 评论 -
KMP算法原理
算法简介KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。KMP算法的时间复杂度O(m+n)。KMP易懂版视...原创 2020-04-19 15:09:43 · 685 阅读 · 0 评论