数据结构
Be Like!
征途是星辰大海
展开
-
数组实现小顶堆
import java.util.Scanner; /** * 堆最重要的性质就是儿子的值一定不小于父亲的值。 * @author:JZ * @date:2020/3/30 */ public class Main { static int[] heap = new int[100]; static int size = 0; public static vo...原创 2020-04-09 20:42:24 · 752 阅读 · 0 评论 -
再学二叉树
树和图的差异 首先看下边两幅图 在上边的两幅图中,左边的是一个树,而右边的是一个图。因为左边的没有回路,而右边的图存在1→2→5→3→1这样的回路。 正是因为数有着“不包含回路”这个特点,所以树被赋予了很多特性。 一棵树中的任意两个节点有且仅有唯一的一条路径联通。 一棵树如果有n个节点,那么它一定恰好有n-1条边。 在一个树中加一条边会构成一个回路。 根节点和父节点 为了确定一颗...原创 2019-12-24 18:26:50 · 252 阅读 · 0 评论 -
循环链表
将单链表中终端节点的指针端由空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相连的单链表称为单循环链表,简称循环链表(circular linked list)。 循环链表解决了从一个节点,访问到链表的全部节点的问题。循环链表和单链表的主要差异就在于循环的判断条件上,原来是判断p->next是否为空,现在则是p->next不等于头结点,则循环结束。 在单链表中,访问第一个节点需要O(1原创 2017-06-21 20:07:51 · 374 阅读 · 0 评论 -
单链表的基本操作(创建、插入、删除......)
单链表可以说是数据结构的基础,只有熟练掌握了单链表的创建、插入等操作,才能在以后学习栈、队列等等数据结构时游刃有余。下面是对单链表的创建、插入、删除等操作的代码。。。。原创 2017-09-15 16:23:16 · 1344 阅读 · 2 评论 -
顺序线性表的基本操作
#include<stdio.h>struct node{ int *List; int lenth; };typedef node *LIST, Lnode;void PrintList(LIST L);//打印线性表 void CreatList(LIST &L, int n);//创建线性表 int GetElem(LIST L, int i);//查找给定位置的元素 int原创 2017-09-30 13:27:29 · 1623 阅读 · 0 评论 -
二叉树的基本操作
#include<stdio.h> #include<string.h>typedef struct BiTNode{ char data; struct BiTNode *lchild, *rchild; }*BiTree;void CreateBiTree(BiTree &T) { char ch; scanf(" %c", &ch); if('@' ==原创 2017-11-19 11:56:00 · 348 阅读 · 0 评论 -
堆排序原理及算法实现
堆排序 堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。 1.堆 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>=key[2i+2]称为大顶堆,满足 K转载 2018-01-12 11:09:45 · 278 阅读 · 0 评论