数据结构
文章平均质量分 97
勤奋的研究僧
这个作者很懒,什么都没留下…
展开
-
24.数据结构 排序
一.基本概念和排序方法概述二.插入排序1.直接插入排序2.折半插入排序3.希尔排序三.交换排序1.起泡排序2.快速排序四.选择排序1.简单选择排序2.堆排序五.归并排序二路归并排序六.基数排序七.外部排序...原创 2020-12-10 23:20:25 · 699 阅读 · 0 评论 -
23.数据结构 查找
1.查找的基本概念查找表是由同一类型的数据元素(或记录)构成的集合。由于“集合”中的数据元素之间存在着松散的关系,因此查找表是一种应用灵便的结构。关键字:用来标识一个数据元素(或记录)的某个数据项的值。主关键字:可唯一地标识一个记录的关键字。(一对一,类似学号,工号)次关键字:反之,用以标识若干记录的关键字。(一对多,类似姓名,成绩)若查找表中存在这样一个记录,则称“查找成功”。查找结果给出整个记录的信息,或指示该记录在查找表中的位置;否则称“查找不成功”。查找结果给出“空记原创 2020-12-08 20:47:36 · 1480 阅读 · 0 评论 -
22.数据结构 图的应用
最小生成树---生成树及其构造原创 2020-12-04 00:06:07 · 1875 阅读 · 0 评论 -
21.数据结构 图的遍历
遍历定义:从已给的连通图中某一顶点出发,沿着一些边访遍图中所有的顶点,且使每个顶点仅被访问一次,就叫做图的遍历,它是图的基本运算。遍历实质:找每个顶点的邻接点的过程。图的特点:图中可能存在回路,且图的任一顶点都可能与其他顶点相通,在访问完某个顶点之后可能会沿着某些边又回到了曾经访问过的顶点。图常用的遍历:深度优先搜索(Depth_First Search---DFS)广度优先搜索(Breadth_First Search---BFS)深度优先遍历//采用邻接矩阵表示原创 2020-12-02 22:54:44 · 861 阅读 · 0 评论 -
20.数据结构 图的存储结构
图的逻辑结构:多对多图没有顺序存储结构,但可以借助二维数组来表示元素间的关系数组表示法(邻接矩阵)链式存储结构:多重链表->邻接表/邻接多重表/十字链表重点介绍:邻接矩阵(数组)表示法邻接表(链式)表示法1.邻接矩阵1.数组(邻接矩阵)表示法无向图的邻接矩阵表示法有向图的邻接矩阵表示法...原创 2020-12-02 19:57:21 · 572 阅读 · 0 评论 -
19.数据结构 图的类型定义
原创 2020-11-29 17:26:06 · 294 阅读 · 0 评论 -
18.数据结构 图的定义与基本术语
1.图的定义和术语图:G=(V,E)V:顶点(数据元素)的有穷非空集合E:边的有穷集合无向图:每个边都是无方向的有向图:每个边都是有方向的完全图:任意两个点都有一条边相连稀疏图:有很少边或弧的图(e<nlogn)稠密图:有较多边或弧的图网:边或弧带权的图邻接:有边或弧相连的两个顶点之间的关系存在(vi,vj),则称vi和vj互为邻接点存在<vi,vj>,则称vi邻接到vj,vj邻接于vi关联(依附):边或弧与顶点之间的关系存在(vi,vj)或<vi,v原创 2020-11-29 17:21:12 · 845 阅读 · 0 评论 -
17.数据结构 树和二叉树
树和森林相关的基础知识原创 2020-11-18 18:58:18 · 265 阅读 · 0 评论 -
16.数据结构 特殊矩阵的压缩存储
不适宜常规存储的矩阵:值相同的元素很多且呈某种规律分布;零元素多。矩阵的压缩存储:为多个相同的非零元素只分配一个存储空间;对零元素不分配空间。什么样的矩阵能够压缩:一些特殊矩阵,如:对称矩阵,对角矩阵,三角矩阵,稀疏矩阵等。稀疏矩阵:矩阵中非零元素较少(一般小于5%)。对阵矩阵:在n×n的矩阵a中,满足如下性质:aij=aji(1<=i,j<=n)只存储下(或者上)三角(包括组对角线)的数据元素。共占用n×(n+1)/2个元素空间。可以以行为主序将元素存放在一个一维数组sa[n×原创 2020-11-13 10:33:22 · 395 阅读 · 0 评论 -
15.数据结构 数组的顺序表示和实现
线性表结构是数组结构的一个特例,而数组结构又是线性表结构的扩展。数组特点:结构固定—定义后,维数和维界不再改变数组的基本操作:除了结构的初始化和销毁之外,只有取元素和修改元素值的操作,一般不做插入和删除操作。一般采用顺序存储结构来表示数组。1.InitArray(&A,n,bound1,…,boundn) //构造数组A2.DestroyArray(&A) //销毁数组A3.Value(A,&e,index1,…,indexn) //取数组元素值原创 2020-11-04 14:36:57 · 1777 阅读 · 0 评论 -
14.数据结构 串的表示和实现
1.定长顺序存储结构#define MAX_STR_LEN 40 //用户可在255(1个字节)以内定义最大串长typedef char SString[MAX_STR_LEN + 1];//0号单元存放串的长度#define DestroyString ClearString //DestroyString()与ClearString()作用相同Status StrAssign(SString T, char *chars){ //生成一个其值等于chars的串T int i; if原创 2020-11-04 10:34:41 · 520 阅读 · 0 评论 -
13.数据结构 循环队列_队列的顺序表示和实现
#define QUEUE_INIT_SIZE 10//队列存储空间的初始分配量#define QUEUE_INCREMENT 2//队列存储空间的分配增量typedef int QElemType;struct SqQueue1{ QElemType *base;//初始化的动态分配存储空间 int rear;//尾指针,若队列不空,指向队列尾元素的下一个位置 int queuesize;//当前分配的存储容量(以sizeof(QElemType)为单位)};void InitQueu原创 2020-10-28 17:36:46 · 697 阅读 · 1 评论 -
12.数据结构 队列_链队列_队列的链式表示和实现
typedef int QElemType;typedef struct QNode{ QElemType data; QNode *next;}*QueuePtr;struct LinkQueue{ QueuePtr front, rear;//队头、队尾指针};在这里插入代码片原创 2020-10-27 15:18:01 · 223 阅读 · 1 评论 -
11.数据结构 使用递归实现栈的应用举例
1.用递归函数求解迷宫问题原创 2020-10-26 17:10:36 · 119 阅读 · 0 评论 -
10.数据结构 栈的应用举例
1.进制转换#define N 8//定义待转换的进制N(二进制-九进制)typedef int SElemType;//定义栈元素类型为整数void conversion1(){ //对于输入的任意一个非负十进制整数,打印输出与其等值的N进制数 SqStack s; unsigned n;//非负整数 SElemType e; InitStack(s);//初始化栈 printf("将十进制整数n转换为%d进制数,请输入:n(>=0)=", N); scanf("%u",原创 2020-10-23 19:58:10 · 906 阅读 · 0 评论 -
9.数据结构 栈的应用举例_数制转换
#define N 8//定义待转换的进制N(二进制-九进制)typedef int SElemType;//定义栈元素类型为整数void conversion(){ //对于输入的任意一个非负十进制整数,打印输出与其等值的N进制数 SqStack s; unsigned n;//非负整数 SElemType e; InitStack(s);//初始化栈 printf("将十进制整数n转换为%d进制数,请输入:n(>=0)=", N); scanf("%u", &n);.原创 2020-10-23 14:46:23 · 219 阅读 · 0 评论 -
8.数据结构 链栈
#include "线性表_单链表.h"typedef SElemType ElemType;//栈结点类型和链表结点类型一致typedef LinkList LinkStack;//ListStack是指向栈结点的指针类型#define InitStack InitList //InitStack()与InitList()作用相同,下同#define DestroyStack DestroyList#define ClearStack ClearList#define StackEmpty .原创 2020-10-23 14:31:05 · 312 阅读 · 0 评论 -
7.数据结构 线性栈
#include "公用.h"#define STACK_INIT_SIZE 10//存储空间初始分配量#define STACK_INCREMENT 2//存储空间分配增量typedef int SElemType;struct SqStack{ SElemType *base;//在栈构造之前和销毁之后,base的值为NULL SElemType *top;//栈顶指针 int stacksize;//当前已分配的存储空间,以元素为单位};//顺序栈void InitStack.原创 2020-10-23 09:30:23 · 138 阅读 · 0 评论 -
6.数据结构 线性表_一元多项式的表示和相加
调用5的部分函数typedef struct LNode{ ElemType data; LNode *next;}*Link,*Position;struct LinkList{ Link head, tail;//分别指向线性链表中的头结点和最后一个结点 int len;//指示线性链表中数据元素的个数};void MakeNode(Link &p, ElemType &e){ //分配由p指向的值为e的结点。若分配失败,则退出 p = (Link)ma..原创 2020-10-21 18:42:03 · 294 阅读 · 0 评论 -
5.数据结构 线性表_增加指向头结点和最后一个结点的指针的结构的单链表
typedef struct LNode{ ElemType data; LNode *next;}*Link,*Position;struct LinkList{ Link head, tail;//分别指向线性链表中的头结点和最后一个结点 int len;//指示线性链表中数据元素的个数};void MakeNode(Link &p, ElemType &e){ //分配由p指向的值为e的结点。若分配失败,则退出 p = (Link)malloc(sizeo.原创 2020-10-21 18:37:47 · 647 阅读 · 0 评论 -
4.数据结构 线性表_双向循环链表
更新中…原创 2020-10-16 17:02:18 · 115 阅读 · 0 评论 -
3.数据结构 线性表_循环单链表(使用尾指针)
更新中…原创 2020-10-15 16:58:33 · 488 阅读 · 0 评论 -
2.数据结构 线性表_单链表(代码部分,不包括循环链表和静态链表)
struct LNode{ ElemType data; LNode *next;};typedef LNode *LinkList;//另一种定义LinkList的方法void InitList(LinkList &L){ //创建一个空的线性表 L = (LinkList)malloc(sizeof(LNode));//产生头结点,并使L指向此头结点 if (!L)//存储分配失败 { exit(OVERFLOW); } L->next = NULL;}原创 2020-10-15 13:12:06 · 122 阅读 · 0 评论 -
1.数据结构 线性表_顺序表示和实现(代码部分)
typedef int Status;typedef int Boolean;typedef int ElemType;#define LIST_INIT_SIZE 10//线性表存储空间的初始分配量#define LIST_INCREMENT 2//线性表存储空间的分配增量struct SqList{ ElemType *elem;//存储空间基址 int length;//当前长度 int listsize;//当前分配的存储容量};void InitList(SqList原创 2020-10-14 13:08:05 · 254 阅读 · 0 评论 -
!=报错 显示没有与这些操作数匹配的“!=“运算符
typedef struct{int a;}ElemType;struct SqList{ElemType *elem;//存储空间基址int length;//当前长度int listsize;//当前分配的存储容量};Status PriorElem(SqList L, ElemType cur_e, ElemType &pre_e){//若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱//否则操作失败,pre_e无定义int i = 2;El原创 2020-10-13 11:16:48 · 4814 阅读 · 2 评论