数据结构
小道名宇
无论你混成什么样子,你都要相信前途无量。
展开
-
抽象数据的表示与实现
//函数结果状态代码#define Ture 1#define FALSE 0#define Ok 1#define Error 0#define INFEASIBLE -1#define OVERFLOW -2//Status是数据的类型,其值是函数结果状态代码typedef int Status;基本函数max、min、abs(求绝...原创 2018-10-16 22:45:00 · 334 阅读 · 0 评论 -
单链表删除最小值结点算法实现
单链表带头结点,删除一个最小值点,,此题在输出方面纠结了很久,所幸得到大佬指点迷津以下是代码#include<cstdio>#include<stdlib.h>typedef struct LNode{ int data;//数据域 struct LNode *next;//指针域}LNode, *Linklist;void Createlist(Lin...原创 2019-08-07 22:45:24 · 4396 阅读 · 3 评论 -
链表小结
单链表也就是线性表的链式存储,它是指通过一组任意的存储单元来存储线性表中的数据元素,每个链表结点包含存放数据元素的数据域(data域)和存放后继结点的指针域单结点的结点类型描述typedef struct LNode{ Elemtype data; struct LNode *next;}LNode,*Linklist;//或typedef struct LNode{ i...原创 2019-08-05 17:32:34 · 338 阅读 · 0 评论 -
线性表的定义
线性表的顺序存储也叫顺序表,是用一组地址连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻。第一个元素存储在线性表中的起始位置,第i个元素的存储位置后面紧接着存储的是第i+1个元素,得知顺序表的特点是表中元素的逻辑位置和其物理顺序相同。假定线性表的元素类型为elemtype,则线性表的顺序存储类型描述为#define MaxSize 50typed...原创 2019-07-31 23:05:30 · 167 阅读 · 0 评论 -
时间复杂度与空间复杂度浅析
首先要弄明白什么是时间复杂度,大部分的书是通过语句的频度来分析算法中时间复杂度的,或者说将算法中基本操作的执行次数作为算法时间复杂度的度量,实际上,时间复杂度就是一个函数,这个函数用来计算执行基本操作的次数事实上大同小异,一个语句的频度f(n)就是指该语句在算法中被重复执行的次数,将算法中所有语句的频度之和记为T(n),它是该算法问题规模n的函数所以将算法的时间复杂度记为(一般用大O表示法):...原创 2019-07-31 20:13:51 · 247 阅读 · 0 评论 -
算法的基本概念
算法是指对特定问题的一种求解步骤的描述算法的特性:有穷性,一个算法必须在有穷时间内完成确定性,算法中每条指令必须有确切含义,不会产生二义性可行性,算法中描述的操作是可以通过已经实现的基本运算执行有限次来实现的输入,一个算法必须有零个或者多个输入输出,一个算法必须有一个或多个输出一个好的算法应该考虑以下目标:正确性可读性健壮性高效率与低存储量要求...原创 2019-07-31 19:03:59 · 120 阅读 · 0 评论 -
数据结构基本概念
**数据:**数据是信息的载体或者说对客观事物的符号表示**数据元素:**数据元素是数据的基本单位**数据对象:**数据对象是具有相同性质的数据元素的集合,也就是数据的一个子集**数据类型:**数据类型是一个值的集合和定义在此集合上的一组操作的总称**原子类型:**其值不可以再分割**结构类型:**其值可以再分解**抽象数据类型:**抽象数据组织及与之相关的操作抽象数据类型(AD...原创 2019-07-31 18:48:32 · 80 阅读 · 0 评论 -
用回溯法实现n皇后问题
首先说一下回溯法,如果在到达递归边界前的某层,由于一些事实导致已经不需要任何一个子问题递归,就可以直接返回上一层,这种方法叫做回溯法。#include<cstdio>#include<cmath>const int maxn=50;int n,count=0,D[maxn],hashtable[maxn]={false};void generateD(int in...原创 2019-08-04 16:20:03 · 555 阅读 · 0 评论 -
递归思想
什么是递归呢?递归就是反复调用自身函数,但是每次把问题范围缩小,直到范围缩小到可以直接得到边界数据的结果,最后再在返回的路上得到相应的解。递归的逻辑中有两个重要的概念:递归边界,递归边界用来返回最简单底层的结果递归式,也叫递归调用,递归式用来减少数据规模并向下一层递归以下经典例子,求n!#include<stdio.h>int F(int n){ if(n==1) ...原创 2019-08-04 09:08:30 · 144 阅读 · 0 评论 -
抽象数据类型线性表的定义
ADT List{数据对象:D={ai|ai=ElemSet,i=1,2,..,n,n≥0}数据关系:R1={<ai-1,ai>|ai-1,ai∈D,i=2,...,n}基本操作:IniList(&L)操作结果:构造一个新的线性表L。DestroyList(&L)操作结果:销毁线性表ClearList(&L)操作结果:将L重置...原创 2018-10-15 21:22:00 · 606 阅读 · 1 评论 -
栈小结
栈是一种只允许在一端进行插入和删除操作的线性表,栈顶是允许插入和删除的那一端,而栈底是不允许插入和删除的那一端基本操作:InitStack(&S);//初始化一个栈StackEmpty(S);//判断一个栈是否为空,若为空则返回true,否则返回falsePush(&S,x);//进栈,若栈S未满,则将x加入使之成为新栈顶Pop(&S,&X);//出栈,若...原创 2019-08-13 00:05:12 · 230 阅读 · 0 评论