
数据结构
s.wy
这个作者很懒,什么都没留下…
展开
-
数据结构——迪杰斯特拉算法求最短路径
问题描述将图以邻接矩阵或邻接表存储,实现Dijkstra算法。算法设计迪杰斯特拉算法:1.假设用带权的邻接矩阵arc,来表示带权有向图,arc[i][j],表示弧<vi,vj>上的权值。若<vi,vj>不存在,则置arc[i][j]为无穷。S为已找到从v出发的最短路径的终点的集合,它的初始状态为空集。那么,从v出发到图上其余各顶点可能达到的最短路径长度的初值为:D[j]=arcs[LocateVex(G,v)][i] vi∈V2.选择vj,使得 D[j]=Min{D[原创 2020-07-18 11:12:02 · 2319 阅读 · 0 评论 -
数据结构——二叉树的层序遍历
算法设计二叉树的层序遍历用到的是队列,创建二叉树时用的是递归的方法。在层序遍历时用队列来存储结点。层序遍历二叉树:首先,让根结点入队,然后执行一个循环,条件是:队列不为空。也就是队列不为空时,令一个结点出队,然后输出该结点的data中的数据,并判断该结点的左右孩子是否存在,若存在,则将它们分别入队。再次执行该循环,直到队列为空,结束。代码:#include "stdio.h"#include "stdlib.h"#define MAXQSIZE 100 //最大队列长度typedef原创 2020-07-18 10:58:56 · 1107 阅读 · 0 评论 -
数据结构——二叉树的先序、中序遍历(非递归)
二叉树的先序、中序非递归遍历用到的是栈,创建二叉树时用的是递归的方法。在先序、中序遍历时用栈来存储结点。先序遍历:首先,创建一个指针p指向二叉树的树根,输出p指向的结点的数据,然后将p压入栈中并让p指向其左孩子,直到p指向的结点为NULL。然后令栈中存的结点指针出栈,并让其指向其右孩子,若不为空,则输出数据。直到栈为空,结束。此时就完成了二叉树的先序遍历。中序遍历:首先,创建一个指针p指向二叉树的树根,然后将p压入栈中并让p指向其左孩子,直到p指向的为NULL。然后令栈中存的结点指针出栈,输出其指向的.原创 2020-07-18 10:52:33 · 1040 阅读 · 0 评论 -
数据结构——关键路径(C语言)
1.定义通常把计划、施工过程、生产流程、程序流程等都当成一个工程。工程通常分为若干个 称为“活动”的子工程。完成了这些“活动”,这个工程就可以完成了。通常用 AOE-网来 表示工程。AOE-网是一个带权的有向无环图,其中,顶点表示事件,弧表示活动,权表示活动持续的时间。对 AOE-网有待研究的问题是:(1)完成整项工程至少需要多少时间?(2)哪些活动 是影响工程进度的关键? 路径长度最长的路径叫做关键路径。程序需输出(1)关键活动 (2)关键路径 (3)花费最少时间2.算法设计2.1步骤1.求关原创 2020-07-18 10:39:38 · 8174 阅读 · 6 评论 -
java实现栈
Java实现链式栈public class Stack { int count; Node top; public Stack(){ count=0; top=null; } public void push(Object n) { //入栈 Node node=new Node(); node.data=n; node.next=top; count++;...原创 2020-03-03 16:37:19 · 169 阅读 · 0 评论 -
java实现循环队列
java实现循环队列public class Queue { int maxcount; //最大长度 int count; //当前长度 Object[] a; int front; //头指针 int rear; //尾指针 public Queue(int size) { //初始化队列 a=new Object[size]; front=0; rear=0;...原创 2020-03-03 16:31:10 · 220 阅读 · 0 评论 -
java递归创建二叉树及遍历二叉树
java递归创建二叉树1.二叉树结点的结构用C语言的指针概念来看,二叉树的结点中应包括三个域,分别为两个指针域和一个数据域,指针域分别为left域和right域,表示指向二叉树的左右子孩子,数据域(data域)存放该结点本身的数据。 class Node{ Node left; //指向左孩子 Node right; //指向右孩子 int data; //数据域 Node...原创 2020-03-01 21:57:04 · 2916 阅读 · 0 评论 -
C语言二叉树的创建及递归遍历
C语言二叉树的创建及递归遍历1.二叉树的创建首先,要先构建结构体。typedef struct TreeNode{ SElemType data; struct TreeNode *lchild,*rchild;}TreeNode,*BiTree;其中,data为数据域,存放二叉树中结点的数据。两指针类型lchild和rchild分别指向该结点的左右孩子。构造好结点后...原创 2019-11-28 12:38:44 · 1168 阅读 · 0 评论 -
数据结构--C语言实现循环队列
C语言——循环队列的实现1.循环队列循环队列可以理解为一个环,实际上是将一个普通队列的尾部连上头部构成的,所以在实现循环队列时,需要两个指针front和rear分别指示队列头元素及队列尾元素的位置。在初始化建空队列时可以另front=rear=0,这样当插入新元素时,尾指针rear加1表示向后移动一位,同理,当删除队列头元素时,头指针front加1表示队列头部一个元素出队列,下一个元素成队首...原创 2019-11-03 16:27:37 · 652 阅读 · 0 评论 -
数据结构--C语言栈的实现
C语言栈的实现(顺序存储结构)1.在定义的函数中改变主函数元素的值首先,我们要先回顾一个知识,对于后面栈的学习会好理解点,如果我们在main()函数中定义了一个变量 int a; 需要在一个自定义的函数中改变改变其值,要怎么操作?#include "stdio.h"#include "stdlib.h"int main(){ int add(int a); int a=...原创 2019-10-21 11:40:57 · 1841 阅读 · 0 评论