数据结构
伦敦看日出
O Captain! My Captain!
展开
-
二叉搜索树Java实现
二叉搜索树(Binary Search Tree):(又:二叉查找树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。建二叉树搜索操作插入操作删除操作二叉搜索树完整代码:https://gitee.com/btyyt/growing-xbt/commit/d2976f8036a9ef757cb9f00e3f42ac460原创 2021-11-19 18:55:36 · 1413 阅读 · 10 评论 -
栈接口的完善
删除栈顶元素的接口:SLDataType popStack(Stack &S,int &e)//出栈,并将删除的元素用e返回{ if(S.top==0) return 0; S.top--; e=S.base[S.top]; return 1;}获取栈顶元素的接口:SLDataType getStack(Stack &S,int &e)//获取栈顶元素,并且将元素使用e返回{ if(S.top==0)原创 2021-04-05 17:22:39 · 121 阅读 · 0 评论 -
栈的创建(基础)
栈:是限定仅在表尾进行插入和删除操作的线性表!栈的结构定义如下:typedef struct Stack{ SLDataType *base;//栈底元素的地址 int top;//栈顶元素的位置} Stack;栈的初始化如下:SLDataType initStack(Stack &S){ S.base=(SLDataType*)malloc(N*sizeof(SLDataType));//申请栈元素的存储空间 if(S.base==NULL)原创 2021-04-04 21:27:29 · 3714 阅读 · 3 评论 -
已知带头结点单链表中各结点的元素值为整形且递增有序,设计算法删除链表中所有大于mink且小于maxk的元素,并释放被删结点的空间。
核心函数如下:void LinkList_clear(LinkList &L,int mink,int maxk){ node *q,*t,*p,*r; p = L->next; while (p!=NULL&& p->date <= mink) {//查找第一个值大于mink的结点 t = p;//t是连接的桥梁指针 p = p->next; } if (p!=NULL) { while (p && p-&g原创 2021-04-03 17:34:06 · 5400 阅读 · 6 评论 -
将链表中所有节点的链接方向“原地”逆转
将链表中所有节点的链接方向“原地”逆转#include<stdio.h>#include<stdlib.h>#define N 10typedef int SLTDateType;typedef struct Node//定义单链表节点{ SLTDateType date; struct Node *next;}Node,*LinkList;SLTDateType LinkList_Init(LinkList &L){ L=(Link原创 2021-03-30 17:22:16 · 2329 阅读 · 0 评论 -
线性表创建(最基础)
线性表:是最基本、最简单、也是最常用的一种数据结构。前提:在学习数据结构的时候命名不要使用拼音!这是初学者的经常犯得错误。顺序表的创建:#include<stdio.h>#define N 10typedef int SLDataType;typedef struct//创建顺序表{ SLDataType array[N]; int size;}SeqList;void SeqListInit(SeqList &L)//输入顺序表的值{ int原创 2021-03-26 21:28:44 · 9607 阅读 · 3 评论 -
时间复杂度/空间复杂度
首先大家应该要知道什么是算法效率。算法效率是指算法执行的时间,算法执行时间需通过依据该算法编制的程序在计算机上运行时所消耗的时间来度量。然后算法效率分为两种:时间效率与空间效率。其时间效率为时间复杂度,空间效率为空间复杂度。时间复杂度:算法的时间复杂度是一个函数,它定性描述该算法的运行时间。一般我们把算法中的基本操作的执行次数,为算法的时间复杂度。时间复杂度常用大O符号表述。推导方法:1、用常数1取代运行时间中的所有加法常数。2、在修改后的运行次数函数中,只保留最高阶项。3、如果最高阶项存在原创 2021-03-06 09:20:35 · 113 阅读 · 0 评论