利用十字链表存储树结构(便于同时求出某一点的入度与出度)------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 ...
随机推荐
- 【LC_Lesson5】---求最长的公共前缀
编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow" ...
- 如何优雅的用策略模式,取代臃肿的 if-else 嵌套,看这篇就够了
经常听同事抱怨,订单来源又加了一种,代码又要加一层if-else判断,光判断订单来源的if-else就好几百行代码,代码我都不想看了,相信很多同行都有过这样的感受! Java的二十几种设计模式背的滚瓜 ...
- C# 根据年月日计算周次
//day:要判断的日期,WeekStart:1 周一为一周的开始, 2 周日为一周的开始 public static int WeekOfMonth(DateTime day, int WeekSt ...
- 五个常见 AI 开发库
上一篇文章已经写过了,人工智能的发展不可谓不曲折,三起两落,不同的历史阶段,主流的研究方法不一样,开始时的 if-else 结构,简单的逻辑判断字符串匹配,到后期的穷举计算等,慢慢发展到现在的大数据与 ...
- 第二阶段冲刺个人任务——four
今日任务: 优化统计团队博客结果界面的显示. 昨日成果: 优化统计个人博客结果页面的显示.
- MCLS Notes
MainToolbar View Button Click Event handle àMainToolbar.xaml.cs OnConnect() functionàService.Messeng ...
- 个人第四次作业Alpha2版本测试~顾毓
个人第四次作业Alpha2版本测试 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience/ 这个作业要 ...
- c# 一维数组和二维数组的几种定义方式<转>
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...
- zabbix3.4源码安装步骤
zabbix3.4源码安装步骤1.安装环境: 安装机器:22.224.9.227 以下简称监控机: 操作系统信息:内核版本: Linux version 2.6.18-194.1.AXS3 (pack ...
- 关于基本布局之——Flex布局
Flex布局 1.Flex为"Flexible Box"的简称,即为弹性布局,可作用于任何容器上.给div这类块状元素元素设置display:flex或者给span这类内联元素设置 ...