
《数据结构与算法》
文章平均质量分 61
多种语言(C、C++、C#、JavaScript)实现数据结构、算法。
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
刘一哥GIS
多年研究地图学、地理信息系统、遥感、摄影测量和GPS等应用,精通ArcGIS等软件的应用,精通多门编程语言,擅长GIS二次开发和数据库系统开发,具有丰富的行业经验,致力于无人机测绘、地信、数字城市、资源、环境、生态、国土空间规划、空间数字建模、数字城市等领域深度应用。
展开
-
数据结构算法:基于C#语言用图实现最短路径,太妙了!
文章目录构造类并实现最短路径方法设计界面编写程序测试新的Graph类构造类并实现最短路径方法在前面的C#编程中,我们已经完成了诸如遍历、最小生成树等许多方法,这个类已经可以完成诸如邻接矩阵输入、顶点矩阵输入问题。这个类在Graph2.cs中。现在,我们新建立一个WINDOWS工程,位置在C#\Dijstra文件夹下,并把Graph.cs复制到该文件夹下,并让你的工程引用它。Graph.cs及最短路径Dijstra方法如下:using System;using System.Collection原创 2021-04-12 18:46:42 · 4220 阅读 · 10 评论 -
【经典回放】多种语言系列数据结构算法:二叉树(JavaScript版)
1 二叉树类的设计以及二叉树遍历要完成二叉树的类设计,最好把链表下的Node.js复制过来,相比链表的结点,二叉树仅仅是多了一个结点指针而已。略加修改后,就是:function TNODE(DATA){this.Data=DATA;this.lChild=null;this.rChild=null;this.SetLChild=function (LCHILD) { this.lChild=LCHILD; }this.GetLChild=function () { retur原创 2020-06-13 15:25:16 · 649 阅读 · 3 评论 -
【经典回放】多种语言系列数据结构算法:二叉树(C#版)
实验任务描述1 用C#语言完成二叉树的类、并构造出一个二叉树;2 用递归方法完成二叉树的遍历;3 泛型的二叉树遍历之一、用队列给出遍历结果4 泛型的二叉树遍历之二、委托方式给出二叉树遍历结果1 二叉树类的设计同C语言一样,要构建一个二叉树,要用到类似struct的东西:类(class),但和C语言的struct不同的是:struct不能包含函数,而class中包含着函数。一个最简单的二叉树类构造过程就是这样的:首先在VS2008中建立一个WINDWOS应用,项目名称T1;原创 2020-06-12 21:07:49 · 1328 阅读 · 6 评论 -
【经典回放】多种语言系列数据结构算法:树(C#、JavaScript、VB6版)
目 录一、树的C#语言实现以及显示二、树的JavaScript语言实现以及显示三、树的VB6语言实现以及显示一、树的C#语言实现以及显示1树的存储结构设计一旦一个工程选择了用C#来完成,那么肯定意味着这是一个真实的应用项目。在现实中的应用项目中,树的存储基本都是用双亲表示法。在我们的教材P142的图6.14里就显示了这样的存储,如图1。2 树的存储结构设计对这样的存储方式,则在C#中是用这样的类来完成的,就是:namespace Tree1{ cla...原创 2020-06-12 20:53:55 · 1260 阅读 · 3 评论 -
【经典回放】多种语言系列数据结构线性表之一:顺序表
一、实验任务描述 建立线性表的ADT后,编程完成: 1 用C语言完成一个顺序表结构; 2 为顺序表完成追加、删除、插入、查找的功能; 3 建立一个链表的结点; 4 完成链表的追加、删除、插入功能; 5 用C#完成一个结点的类; 6 C#完成链表的追加、删除、插入功能的类; 7 C#编写泛型的链表类; 8 用JavaScript完成顺序表; 9 任选一种语言完成教材中线性表合并的任务。二、实验目的原创 2020-04-12 09:24:03 · 959 阅读 · 2 评论 -
【经典回放】多种语言系列数据结构线性表之二:链表
目录1 链表结构设计2 简单的链表测试2 链表的组织和ADT设计3 初始化有头结点链表4 有头结点链表中追加一个结点(一行数据)5 获得链表中第n个结点的数据6 链表L中第n个结点前插入一个结点E7 链表L中删除第n个结点8 链表L中清除所有结点9 链表L各结点的文件保存与读取1 链表结构设计前面已经分析过所谓顺序表的缺点,我们在这里可以肯定一点:在...原创 2020-04-14 23:27:10 · 584 阅读 · 0 评论 -
【经典回放】多种语言系列数据结构算法:串(C版)
我们这里说的串、就是标准的C语言的串,这点,和我们教材中另行定义的串并不一致。我们这里强调仅仅是按C语言的标准处理串,是因为你会按C语言的标准构造串、而不是按其它的模式定义的。在我们的教材上,串相当与一个:struct ElemType{ char *str;};构造的顺序表、或者是链表。而在C语言中,字符串是一个字符数组,如:char str[100];且这个字...原创 2020-04-25 01:16:24 · 1001 阅读 · 2 评论 -
【经典回放】多种语言系列数据结构算法:队列(C版)
一、队列ADT以及C语言实现1 队列的原理以及ADT分析队列是说:把一些数据按先进先出来组织,如同日常生活中的排队过程。队列最主要的操作是<1> 数据加入队列;<2> 从队列中取出数据;加入队列只能加入到队列尾巴上,而从队列中取出数据、则只能是取出队列中的第一个,一般不允许有插队、或队列中间删除数据的要求。由上述分析,队列的ADT见教材P68,同时我...原创 2020-04-25 00:55:23 · 907 阅读 · 0 评论 -
【经典回放】多种语言系列数据结构算法:栈(JavaScript版)
本文采用JavaScript语言实现栈结构算法并举例应用。JavaScript的栈是数组对象中自动提供的,这点如同C#,实际也不需要自己编写什么栈的程序,如果你用:var s=new Array();定义一个s的数组,则这个s上将有以下的方法可供使用:其中:FF: Firefox, IE: Internet Explorer而这个对象提供的属性,则如下表:FF: F...原创 2020-04-15 11:23:18 · 821 阅读 · 0 评论 -
【经典回放】多种语言系列数据结构算法:栈(C#版)
本文采用C#语言实现栈结构算法并举例应用。一、C#的栈对象使用对C#而言,要使用栈是极其简单的事情,因为C#已经有栈对象,所以根本不需要自用再用顺序表构造栈,只需要你会说明、会应用即可。在C#中栈对象的类型名称是Stack,这是个泛型的对象,所以,你在使用这个对象的时候,可以不必在意什么类型的数据可以使用。例1 不同对象的的进出栈测试。打开C#建立一个WINDOWS应用工程...原创 2020-04-15 11:16:56 · 899 阅读 · 1 评论 -
【经典回放】多种语言系列数据结构算法:栈(C版)
本文采用C、C#、JavaScript实现栈结构算法。一 栈的基本原理分析作为栈这种数据结构,数据是进行所谓的先进后出操作,但栈在操作中,并不需要在中间插入删除操作、一般也不需要在进栈数据中查找什么,这种情况下,恰恰是顺序表可以完成的非常好的场合,所以栈经常是用一个简单的数组即可完成。#include<stdio.h>int s[100];int top=0;v...原创 2020-04-15 11:03:40 · 957 阅读 · 2 评论 -
【经典回放】多种语言系列数据结构算法:数组
数组如同前面学过的顺序表,一次性申请一片地址连续的存储空间,我们还知道,计算机中数组是以一维的形式存储的,因为计算机的内存的一维的。在知道了多维数据的计算机存储方式后,我们还要知道构造一个多维数据的方法,并构造ADT,具体做法如下所示:内容和步骤:1、C语言中的可变参数函数前面学过一个可变参数的函数scanf,如scanf(“%d”,& a);scanf(“%d%d” &...原创 2020-02-24 12:46:55 · 549 阅读 · 0 评论 -
【经典回放】多种语言系列数据结构算法:希尔排序
【希尔排序原理】每隔sp(整数)个数即取数并判断大小,交换,先构造局部有序序列,直到sp为1,构造完整的有序序列。给出一组数据,如下: 0 1 2 3 4 5 6 7 8 9 ...原创 2020-02-19 14:55:52 · 502 阅读 · 0 评论 -
【经典回放】多种语言系列数据结构算法:基数排序
一、算法思路思想基础基数排序的思想就是先找出待排序中的最大者,然后按最大者申请一个足够大的内存空间,并将其初始化为零,然后将所有待排序的数装入其中,标记装入的数,最后按下标依次返回所有数即可。函数public void RadixSort(int []A,int n) { int Max,i,j,m,nz;...原创 2020-02-24 11:58:49 · 539 阅读 · 0 评论 -
【经典回放】多种语言系列数据结构算法:堆排序
一、实验内容及步骤堆,可以看做是完全二叉树,有大顶堆和小顶堆,大顶堆是指树的父结点大于孩子结点的堆(根结点最大),而小顶堆是指树父结点小于孩子结点的堆(根结点最小),如图1所示。如上的小顶堆,若在输出堆顶的最小值之后,使得剩余的n-1个元素的序列重又建成一个堆,则得到n个元素中的次小值,如此反复执行,便能得到一个有序序列,这个过程称为堆排序。堆排序是充分利用二叉树性质的排序方法,从归并...原创 2020-02-22 11:49:27 · 503 阅读 · 0 评论 -
【经典回放】多种语言系列数据结构算法:快速排序
快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。直接上干货!1. C语言:#include <s...原创 2020-02-19 14:41:09 · 527 阅读 · 0 评论 -
【经典回放】多种语言系列数据结构算法:归并排序
干货:C#语言实现归并排序!1、思想基础 归并排序来自一个很基本的设想:假如把两个有序的序列、能合并成一个,那么不断合并,就能完成一个排序过程。归并排序最原始的是两个有序序列的结合,最基本的有序序列,可以是只有一个数据,比如{2},{4}合并成{2,4},或者是:A={2,8,10,15},B={5,9,12},合并后的C就是:C={2,5,8,9,12,15}注意这里必须...原创 2020-02-21 13:45:32 · 582 阅读 · 0 评论