
数据结构
Peanutty
菜鸡一枚
展开
-
图的DFS非递归实现,栈
图的DFS非递归实现,栈思路第一个结点入栈,读栈顶,结点有未被访问的邻接点则将邻接点入栈,再读栈顶(不出栈),栈顶元素有未被访问的边则继续入栈若读到的栈顶没有边或者都被访问过,则出栈,然后再读下一个栈顶(看下一栈顶是否有未被访问的边)图如下从结点 6 开始DFS遍历代码//图邻接表结构的定义 typedef struct ANode{ int adjvex; int weight; //权 struct ANode *nextarc;}ArcNode;typedef s原创 2021-11-09 00:15:58 · 1564 阅读 · 0 评论 -
C语言用程序实验哥德巴赫猜想
哥德巴赫猜想任意一个大于6的偶数可以表示为两个素数之和思路从1开始循环到这个数n的 n/2,用isPrime()函数判断是否为素数,如果isPrime( i )并且isPrime( n-i ),那么这个数n就表示为 i 和 n-i 的和实现#include<iostream>#include<stdio.h>//哥德巴赫猜像任何一个大于6的偶数可以表示为两个素数之和 //判断是否是素数 int isPrime(int n){ if(n<=1) ret原创 2021-10-17 00:01:56 · 2475 阅读 · 0 评论 -
判断一棵树是否为二叉排序树
判断一棵树是否为二叉排序树思路二叉排序树的中序遍历是有序的,所以判断一棵排序树可以进行中序遍历并且在遍历过程中判断是否有序。为此设置一个全局变量记录上一个中序遍历节点的值,遍历过程中与全局变量比大小并更新全局变量的值。实现#include<stdio.h>typedef struct node{ int data; struct node *lchild; struct node *rchild;}BTNode;int num=-32767; //定义最小的全局变原创 2021-10-15 21:59:36 · 2789 阅读 · 0 评论 -
链表实现直接选择排序
链表实现直接选择排序思路先将头结点与后续节点断开,用位置指针指向后续第一个节点。此时后续节点为未排序序列,每轮循环从未排序链表中找到最大节点,然后用头插法插入L指向的链表,直到未排序链表为空则L指向的链表中是从小到大顺序排好的链表代码//单链表的数据结构定义typedef struct LNode{ int data; struct LNode *next; //此处必须要加struct }LNode, *LinkList;void select_sort(LinkList &原创 2021-10-14 23:03:38 · 3636 阅读 · 1 评论 -
【线段树】详细介绍与基本操作
原文地址:https://blog.youkuaiyun.com/bjweimengshu/article/details/106990678作者:程序员小灰 线段树是一个复杂的数据结构,比较难理解,也比较难解释清楚。在我将这个数据结构反复学习了五遍的时候,我终于有了信心写出这篇介绍线段树的文章。希望大家能够掌握这种数据结构。 这篇文章比较长,建议大家耐心阅读,好好消化吸收哦~~ 前置内容 学习线段树前,你需要掌握二叉搜索树,不太了解的小伙伴,可以看看小灰之前发布的红黑树漫画,前半部分讲解了二叉搜索树.转载 2021-04-15 21:38:19 · 371 阅读 · 0 评论