![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 92
CCPigSnail
这个作者很懒,什么都没留下…
展开
-
二叉查找树
二叉查找树对于树中的每个结点X,它的左子树中所有关键字值小于X的关键字值,而它的右子树中所有关键字值 大于X的关键字值 。头文件head.h#ifndef HEAD_H#define HEAD_Htypedef int ElementType;typedef struct node* SearchTree;typedef struct node{ ElementType data; SearchTree Left; SearchTree Right;}Tre原创 2020-12-28 17:20:05 · 246 阅读 · 0 评论 -
线索二叉树
二叉树链式存储的缺点就是有很多指向空的指针,这样会浪费很多空间。一棵有n个结点的二叉树,共有2n个指针域,有n-1个分支线,就有2n-(n-1) = n + 1的空指针域。每个空指针都应该被利用起来,可以让它们指向遍历时其前一个结点或者后一个结点,称遍历时的前一个结点为当前结点的前驱, 遍历时的后一个结点为这个结点的后继。比如下面的一棵树,中序遍历为:HDIBJEAFCG对于I结点来说,前驱就是D,后继就是B,原来的二叉树I的左右结点都没有用到。现在可以让它记录一下其前驱和后继,一般是左前驱,右后原创 2020-12-23 16:51:01 · 153 阅读 · 0 评论 -
树的表示方法
树的表示法双亲表示数组存树中的数据,元素是结构体,域中有双亲位置#ifndef _HEAD_H#define _HEAD_H#define MAX_TREE_SZIE 100typedef int TElementType;typedef struct { TElementType data; int parent;}PTNode;typedef struct { PTNode nodes[MAX_TREE_SZIE]; int r, n;}PTre原创 2020-12-23 10:11:21 · 551 阅读 · 0 评论 -
二叉树——链式存储(建立,遍历,删除)
树是递归定义的:树是n(非负整数)个结点的有限集。n = 0 时为空树。在任意一棵非空树中:有且仅有一个特定的称为根的结点当n>1时,其余结点可分为m(m > 0)个互不相交的有限集,其中每一个集合本身又是一棵树,并且称为根的子树。头文件head.h#ifndef HEAD_H#define HEAD_Htypedef char TElementType; typedef struct Node* BiThrTree;typedef struct Node{.原创 2020-12-23 09:15:37 · 591 阅读 · 0 评论 -
队列的顺序存储
用循环数组来,描述一个队列。要搞清楚两件事:何时为空何时为满头文件#ifndef _HEAD_H#define _HEAD_H#define MINSIZE 5typedef int ElementType;typedef struct node* Queue;typedef struct node{ ElementType* arrayQueue; int front; //队头 int rear; //队尾 int length; //队列.原创 2020-12-13 13:23:35 · 120 阅读 · 0 评论 -
队列的链式存储
队列的链式存储就是一个尾进头出的链表头文件#ifndef _HEAD_H#define _HEAD_Htypedef struct node* Queue;typedef int ElementType;typedef struct node{ ElementType data; Queue next;}Node;/*建立一个新队列*/Queue CreateQueue(void);/*判断空队*/int IsEmpty(Queue q);/*释放内存置空*.原创 2020-12-12 11:47:56 · 95 阅读 · 0 评论 -
栈的顺序存储
可以用数组来表示栈的结构。定义一个结构体,其中有一个数组,动态分配内存。top记录栈顶。头文件#ifndef _HEAD_H#define _HEAD_H#define MINSIZE 5 //定义最小长度为5#define EMPTY -1 //栈空情况typedef int ElementType;typedef struct node* Stack; typedef struct node{ ElementType* array; int arrayMaxL原创 2020-12-09 20:57:43 · 109 阅读 · 0 评论 -
栈的链式存储
栈是一种特殊的链表。有一个专门来记录栈顶的结点。栈空时其next为NULL,栈中有元素时它的next指向那个最新进入的元素。入栈:入栈远素next指针指向上一个栈顶,栈顶指针指向入栈元素出栈:栈顶指针指向出栈元素的下面一个元素(在图中看),释放出栈元素所占内存头文件#ifndef _HEAD_H#define _HEAD_H#include <stdbool.h>typedef struct node* Stack;typedef int ElementType;typ.原创 2020-12-09 09:35:46 · 374 阅读 · 0 评论 -
静态链表(链表的游标实现)
C语言有指针,可以存储下一个位置的地址,而不是所有语言都有指针。为了让这些语言也实现像链表一样的功能。就有人想出来了用数组来实现的链表。主要理解这种思想,不一定要会写。#define MAXSIZE 1000typedef int ElementType;typedef struct{ ElementType data; int cur;}Component, StaticLinkList[MAXSIZE];初始化空表是这样的,space是数组名bool InitL.原创 2020-12-08 09:39:34 · 607 阅读 · 1 评论 -
数据结构——单键表操作集
单链表由多个结点构成,每个结点有数据域和指针域。指针域指向其后继的结点。最后一个结点的指针指向NULL。头结点的数据存放长度。头文件head.h#ifndef _HEAD_H#define _HEAD_Htypedef struct node* List;typedef int ElementType;typedef struct node { ElementType data; List next;}Node;/*创建链表, 表长为length*/List Cre原创 2020-12-06 12:48:21 · 181 阅读 · 0 评论 -
数据结构——顺序表操作集
线性表线性表就是像线一样的一个接着一个的数据集组成的表。第一个数据集没有前驱,最后数据集一个没有后继。关系上是一对一的。顺序表用数组来实现存诸数据,这里我用了char型元素的数组,当然也可以用结构体元素的数组。这样数组中的每一个元素就都是结构了。数据最大数不超过MASIZE。表中元素开始为0,用listLength来纪录表中元素。#ifndef _HEAD_H#define _HEAD_H#define MAXSIZE 20 typedef struct node{原创 2020-12-04 15:29:02 · 1199 阅读 · 0 评论