利用十字链表存储树结构(便于同时求出某一点的入度与出度)------C语言实现
#include <stdio.h>
#include<conio.h>
#include<stdlib.h> /*
利用十字链表存储有向图,可用于同时查找某个顶点的出度与入度;
*/ typedef struct edge {//顶点表
int headvex, tailvex;//headvex弧的七点在顶点表中的下标,tailvex是边的重点在顶点表中的下标
edge *headlink, *taillink;//headlink指向与边相同起点的边,taillink指向与边相同终点的边
}Edge; typedef struct vex {//边表
int data;//顶点表数据
Edge *firstin, *firstout;//firstin表示指向第一个入边,firstout指向第一个出边
}Vex; typedef struct vexedge {
Vex ve[];
int vexnum, edgenum;
}Vexedge; //创建表 void create(Vexedge *v) {
Edge *e;
int i, j, k;
printf("请输入顶点个数与边的条数:");
scanf("%d%d", &v->vexnum, &v->edgenum);
for (i = ; i<v->vexnum; i++) {//初始化顶点表
printf("请输入顶点的值:");
scanf("%d", &v->ve[i].data);
v->ve[i].data = getchar();
v->ve[i].firstin = NULL;
v->ve[i].firstout = NULL;
}
for (k = ; k<v->edgenum; k++) {//初始化边表
printf("请输入边的顶点坐标");
scanf("%d%d", &i, &j);
e = (Edge *)malloc(sizeof(Edge));
e->headvex = i;
e->tailvex = j;
e->headlink = v->ve[i].firstout;
e->taillink = v->ve[j].firstin;
v->ve[i].firstout = e;
v->ve[j].firstin = e;
}
} void degree(int n, Vexedge v) {
int sumin = , sumout = ;
Edge *e1, *e2;
e2 = v.ve[n].firstout;
e1 = v.ve[n].firstin;
while (e1) {
sumin++;
e1 = e1->taillink;
}
while (e2) {
sumout++;
e2 = e2->headlink;
}
printf("出度为:%d 入度为:%d", sumout, sumin);
} int main() {
Vexedge v;
int m;
create(&v);
printf("请输入你想要查询的顶点:");
scanf("%d", &m);
degree(m, v);
getch();
return ; }
利用十字链表存储树结构(便于同时求出某一点的入度与出度)------C语言实现的更多相关文章
- 利用十字链表压缩稀疏矩阵(c++)-- 数据结构
题目: 7-1 稀疏矩阵 (30 分) 如果一个矩阵中,0元素占据了矩阵的大部分,那么这个矩阵称为“稀疏矩阵”.对于稀疏矩阵,传统的二维数组存储方式,会使用大量的内存来存储0,从而浪费大量内存.为 ...
- 数据结构之---C++语言实现图的十字链表存储表示
近期一直忙着考研复习,非常久都没有更新博客了.今天写一篇数据结构的存储. //有向图的十字链表存储表示 //杨鑫 #include <iostream> #include <cstd ...
- 数据结构C语言版 有向图的十字链表存储表示和实现
/*1wangxiaobo@163.com 数据结构C语言版 有向图的十字链表存储表示和实现 P165 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h> ...
- javascript实现数据结构:稀疏矩阵的十字链表存储表示
当矩阵的非零个数和位置在操作过程中变化大时,就不宜采用顺序存储结构来表示三元组的线性表.例如,在作“将矩阵B加到矩阵A上”的操作时,由于非零元的插入或删除将会引起A.data中元素的移动.为此,对这种 ...
- 利用Arraylist输入学生的成绩,求出平均分和总分。
Console.WriteLine("请输入学生人数:"); int n=int.Parse(Console.ReadLine()); ArrayList arr= new Arr ...
- 图->存储结构->十字链表
文字描述 十字链表是有向图的另一种链式存储结构. 在十字链表中,对应于有向图中每一条弧有一个结点,对应于每个顶点也有一个结点.这些结点的结构如下所示: 在弧结点中有5个域: 尾域tailvex和头域h ...
- [game]十字链表的AOI算法实现
AOI主要有九宫格.灯塔和十字链表的算法实现.本文阐述十字链表的实现和尝试. 1. 基本原理 根据二维地图,将其分成x轴和y轴两个链表.如果是三维地图,则还需要维护多一个z轴的链表.将对象的坐标值按照 ...
- 链表插入和删除,判断链表是否为空,求链表长度算法的,链表排序算法演示——C语言描述
关于数据结构等的学习,以及学习算法的感想感悟,听了郝斌老师的数据结构课程,其中他也提到了学习数据结构的或者算法的一些个人见解,我觉的很好,对我的帮助也是很大,算法本就是令人头疼的问题,因为自己并没有学 ...
- 数据结构之---C语言实现广义表头尾链表存储表示
//广义表的头尾链表存储表示 //杨鑫 #include <stdio.h> #include <malloc.h> #include <stdlib.h> #in ...
随机推荐
- sg函数的变形 - 可以将一堆石子分开
Nim is a two-player mathematic game of strategy in which players take turns removing objects from di ...
- C#图片采集软件 自动翻页 自动分类(收集美图必备工具)(一)
网站管理员希望将别人的整站数据下载到自己的网站里或者将别人网站的一些内容保存到自己的服务器上.从内容中抽取相关的字段,发布到自己的网站系统中.有时需要将网页相关的文件也保存到本地,如图片.附件等. 图 ...
- 安装mysql遇到的问题
想在自己的PC上安装mysql服务器,首先在官网下载mysql的安装文件. MySQL安装文件分两种 .msi和.zip ,.msi需要安装,.zip文件需要配置环境变量. 我首先下载的是不需要安装的 ...
- 聊一聊 InnoDB 引擎中的这些索引策略
在上一篇中,我们简单的介绍了一下 InnoDB 引擎的索引类型,这一篇我们继续学习 InnoDB 的索引,聊一聊索引策略,更好的利用好索引,提升数据库的性能,主要聊一聊覆盖索引.最左前缀原则.索引下推 ...
- jade 网上看到一个不错的demo 分享 一下 链接
http://download.csdn.net/detail/sarah1992/9347903 启动的时候 先启动 http://localhost:8080/ 在 node chat 启动 ht ...
- Algorithm: 多项式乘法 Polynomial Multiplication: 快速傅里叶变换 FFT / 快速数论变换 NTT
Intro: 本篇博客将会从朴素乘法讲起,经过分治乘法,到达FFT和NTT 旨在能够让读者(也让自己)充分理解其思想 模板题入口:洛谷 P3803 [模板]多项式乘法(FFT) 朴素乘法 约定:两个多 ...
- js解析json时报:Unexpected token s in JSON at position 0
原因肯定是返回的json格式有问题 最有可能是后台在程序执行过程中,输出了某些调试信息等等,这些输出的字符串和json拼接成了新的字符串来解析,这时就会报错: 比如我在入口文件里var_dump了__ ...
- Docker三剑客之swarm
简介 swarm是一种docker集群管理工具,跟三剑客前两者不同的是:compose是一种统一编排的工具,machine是一种远程控制工具,swarm则是将多个docker主机映射成一个docker ...
- java基础算法(一):最大子序列和问题的多种算法思路
问题: /** * 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和,并顺序打印子序列. * 示例: * 输入: [-2,1,-3,4,-1,2,1 ...
- PCA技术的自我理解(催眠
Principal component analysis(PCA) 中文就是主成成分分析.在学数学建模的时候将这分为了评价类的方法(我实在是很难看出来,在机器学习中是属于无监督学习降维方法的一种线性降 ...