![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 75
丿笔迹
责任心、态度、自制力。
请认真对待每件事
展开
-
用指针实现链栈的方法
在算法中要用到多个栈时,最好用链表作为栈的存储结构,即用指针来实现。#include#include//*******************************//定义节点的结构体typedef struct snode *slink;typedef struct snode{ int element; slink next;}StackNode;//*******原创 2013-10-09 18:24:51 · 957 阅读 · 0 评论 -
算法实验题 车皮编序问题(转化为在全排列的基础上的堆栈问题)
车皮编序问题 .问题描述: 在一个列车调度站中,1 条轨道连接到1 条侧轨处,形成1 个铁路转轨栈,如下图所示。 其中左边轨道为车皮入口,右边轨道为出口,编号为1,2,…,n 的n 个车皮从入口依次进 入转轨栈,由调度室安排车皮进出栈次序,并对车皮按其出栈次序重新编序a1, a2,., an 。 编程任务 给定正整数n,编程计算左边轨道车皮编号依次为1,2,…,n 时,在右边轨道最多可 以原创 2014-04-14 23:57:36 · 1679 阅读 · 0 评论 -
二叉排序树的操作
二叉排序树的建立,中序遍历,前序遍历,后序遍历,计算总结点数,计算树的深度#include#includetypedef struct Node{ int element; struct Node * Lchild; struct Node * Rchild;}*Tree,TNode;//二叉排序树的建立void creatTree(Tree& T,int m){原创 2014-01-08 00:02:14 · 1087 阅读 · 0 评论 -
单源最短路径(Dijkstra算法)
基本算法:将图G中所有的顶点V分成两个顶点集合Va和Vb,如果源点S到u的最短路径已经确定,则点u属于集合Va,否则属于集合Vb。最开始的时候Va只包含源点S,其余的点属于Vb,算法结束时所有由源点可达的点属于Va,不可达的点仍属于Vb。可以在求出最短路径长的同时记录最短路径,方法是记录终点前的前一个点,这样倒着查回去就能确定整条最短路径。具体步骤:(1)首先初始化,将源点S到图中原创 2013-12-04 15:08:25 · 1132 阅读 · 1 评论 -
数据结构之图的存储结构_前向星
前向星是一种通过存储边信息的方式存储图的数据结构。它的构造方式非常简单,读入每条边的信息,将边存放在数组中,把数组中的边按照起点顺序排序,前向星就构造完成了但是为了查询方便,会有一个数组存储起点为Vi的第一条边的位置#include#include#includeconst int maxn=100;const int maxm=100;int head[maxn];str原创 2013-11-09 11:26:53 · 715 阅读 · 0 评论 -
数据结构之图的存储结构——动态邻接表
邻接表是图的一种链式存储结构。对于图G中每个定点Vi,把所有邻接于Vi的顶点Vj链成一个单链表,这个单链表称为顶点Vi邻接表。邻接表有三种实现方法,分别为动态建表实现,使用STL中的vector模拟链表实现和静态建表实现。 动态建表中建立一个VNode的数组就可以访问每个顶点的邻接表。动态建表要求对于每个读入的边数据新建一个EdgeNode对象,加到对应的VNode的邻接表里,同时原创 2013-11-09 19:52:19 · 1392 阅读 · 0 评论 -
数据结构之用邻接表实现图(详解)
用邻接表表示图G=(V,E)时,对每个顶点i属于V,将它的所有邻接顶点存放在一个表中,这个表称为顶点i的邻接表。对每个顶点的邻接表存储在图G的邻接表数组中。#include#include#include//*********************************//打印错误信息void Error(char *s){ printf("%s",s); ex原创 2013-11-12 21:30:36 · 2966 阅读 · 1 评论 -
图的深度遍历
深度优先遍历是连通图的一种遍历策略。其基本思想如下:设x是当前被访问顶点,在对x做过访问标记后,选择一条从x出发的未检测过的边(x,y)。若发现顶点y已访问过,则重新选择另一条从x出发的未检测过的边,否则沿边(x,y)到达未曾访问过的y,对y访问并将其标记为已访问过;然后从y开始搜索,直到搜索完从y出发的所有路径,即访问完所有从y出发可达的顶点之后,才回溯到顶点x,并且再选择一条从x出转载 2013-11-11 20:33:34 · 778 阅读 · 0 评论 -
数据结构之用邻接矩阵实现赋值无向图,有向图,无向图
用邻接矩阵表示赋权无向图时,将一个赋权无向图G当作一个赋权有向图来处理,将G的每一条边(i,j),用两条有向边(i,j)和(j,i)来代替。因此,加入边权为w的有向边(i,j)时,还应同时加入边权为w的有向边(j,i); 删除边时同理其余操作同 邻接表实现赋值有向图#include#include#include//int noEdge=0;//数据结构typedef st原创 2013-11-11 23:23:39 · 3325 阅读 · 0 评论 -
数据结构之图用邻接矩阵实现赋值有向图
从图的结构和概念上看,可将图分为赋权有向图,赋权无向图,有向图和无向图四种不同类型。其中,赋值有向图具有比较一般的特征。用邻接矩阵表示法中,用一个二维数组来存储图中各边的信息。用邻接矩阵表示一个n个顶点的有向图时,所需空间为n*n。输入邻接矩阵和查询一遍口需要n*n的时间。当图的边数远小于n*n时,该方法就会很浪费时间和空间,而用邻接表来表示图会更有效。#include#in原创 2013-11-11 23:13:03 · 2923 阅读 · 0 评论 -
数据结构之图的存储结构——静态建表(链式前向星)
邻接表的静态建表存储图的凡是也称链式前向星。链式前向星方法最开始是基于前向星,是以提高其构造效率为目的设计的存储方式,最终形成的数据却是一个变形的邻接表。链式前星采用数组模拟链表的方式实现邻接表的功能,并且使用很少的额外空间,可以说是目前建图和遍历效率最高的存储方式。 head数组存储描述点Vi边信息的链的起点在Edges数组的位置。构造链式前向星就是将新加入的节点链在对应链的最开始并修原创 2013-11-10 00:34:01 · 1520 阅读 · 0 评论 -
用循环数组实现队列的方法
用数组实现表的方法可用于实现队列,但这样做的效果并不好。尽管可以用一个游标来指示队尾,使得EnterQueue运算在O(1)时间内完成,但是在执行DeleteQueue时,为了删除队首元素,必须将数组中其他元素都向前移动一个位置。这样队列中有n个元素时,执行DeleteQueue就需要n的时间。为了提高运算的效率,采用另一种观点来处理数组中各单元的位置关系。设想数组queue[0:maxsiz原创 2013-10-10 23:45:49 · 1075 阅读 · 0 评论 -
用指针实现队列的方法
队列:先进先出#include#includetypedef int QItem;typedef struct qnode*qlink;typedef struct qnode{ QItem element; qlink next;}Qnode;typedef struct Ique *Queue;typedef struct Ique{ qlink rear;原创 2013-10-10 20:51:09 · 1532 阅读 · 0 评论 -
用间接寻址的方法实现表
#include#include#include//****************************typedef int *addr;typedef struct indlist *List;typedef struct indlist{ int n; int maxsize; addr*table;//指向表中元素的指针数组;}Indlist;//******原创 2013-09-26 22:02:50 · 1314 阅读 · 0 评论 -
用数组实现栈的方法
用数组实现栈与数组实现表的原理一样,删除表的一些功能就是栈了#include#includeint size;typedef int StackItem;typedef struct sstack*Stack;typedef struct sstack{ int top; int maxtop;//栈顶位置的最大值 StackItem *data;}Sstack;/原创 2013-10-10 15:35:55 · 793 阅读 · 0 评论 -
算法实验 层序列表问题(二叉树)
问题描述:对树中结点按层序列表是指先列树根,然后从左到右一次列出所有深度为1的节点,再从做到右地列出深度为2的节点,等等。层序列表问题要求对一颗给定的二叉树按层序列表。数据输入:第一行为一个整数n,表示给定的二叉树有n个顶点。接下来的n行中,每行有3个整数a,b,c 分别表示编号为a的节点的左儿子b和右儿子c。51 4 24 3 02 5 03 0 05 0 0原创 2014-04-25 00:46:19 · 1328 阅读 · 0 评论