#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语言实现的更多相关文章

  1. 利用十字链表压缩稀疏矩阵(c++)-- 数据结构

    题目: 7-1 稀疏矩阵 (30 分)   如果一个矩阵中,0元素占据了矩阵的大部分,那么这个矩阵称为“稀疏矩阵”.对于稀疏矩阵,传统的二维数组存储方式,会使用大量的内存来存储0,从而浪费大量内存.为 ...

  2. 数据结构之---C++语言实现图的十字链表存储表示

    近期一直忙着考研复习,非常久都没有更新博客了.今天写一篇数据结构的存储. //有向图的十字链表存储表示 //杨鑫 #include <iostream> #include <cstd ...

  3. 数据结构C语言版 有向图的十字链表存储表示和实现

    /*1wangxiaobo@163.com 数据结构C语言版 有向图的十字链表存储表示和实现 P165 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h> ...

  4. javascript实现数据结构:稀疏矩阵的十字链表存储表示

    当矩阵的非零个数和位置在操作过程中变化大时,就不宜采用顺序存储结构来表示三元组的线性表.例如,在作“将矩阵B加到矩阵A上”的操作时,由于非零元的插入或删除将会引起A.data中元素的移动.为此,对这种 ...

  5. 利用Arraylist输入学生的成绩,求出平均分和总分。

    Console.WriteLine("请输入学生人数:"); int n=int.Parse(Console.ReadLine()); ArrayList arr= new Arr ...

  6. 图->存储结构->十字链表

    文字描述 十字链表是有向图的另一种链式存储结构. 在十字链表中,对应于有向图中每一条弧有一个结点,对应于每个顶点也有一个结点.这些结点的结构如下所示: 在弧结点中有5个域: 尾域tailvex和头域h ...

  7. [game]十字链表的AOI算法实现

    AOI主要有九宫格.灯塔和十字链表的算法实现.本文阐述十字链表的实现和尝试. 1. 基本原理 根据二维地图,将其分成x轴和y轴两个链表.如果是三维地图,则还需要维护多一个z轴的链表.将对象的坐标值按照 ...

  8. 链表插入和删除,判断链表是否为空,求链表长度算法的,链表排序算法演示——C语言描述

    关于数据结构等的学习,以及学习算法的感想感悟,听了郝斌老师的数据结构课程,其中他也提到了学习数据结构的或者算法的一些个人见解,我觉的很好,对我的帮助也是很大,算法本就是令人头疼的问题,因为自己并没有学 ...

  9. 数据结构之---C语言实现广义表头尾链表存储表示

    //广义表的头尾链表存储表示 //杨鑫 #include <stdio.h> #include <malloc.h> #include <stdlib.h> #in ...

随机推荐

  1. Lambda表达式(lambda expression)⭐⭐⭐⭐⭐

    原作者 lambda表达式(lambda expression)实际上是匿名函数一种表示形式, 即没有函数名的函数:参数列表=>表达式或语句块,在我看来主要目是为了简化代码编写,提高代码可读性而 ...

  2. MySQL 行列相互转换

    行列相互转换 /*创建表*/ CREATE TABLE ic ( NAME ), Product ), amount INT ); INSERT INTO ic VALUES (), (), (), ...

  3. Activiti脚本任务(ScriptTask)

    Activiti脚本任务(ScriptTask) 作者:Jesai 你一直问为什么到不了远方,请停下数数你的脚步,是不是还没迈开腿 对于没有接触过groovy脚本语言的人来说,可能比较难使用 应用场景 ...

  4. Filder配置及使用教程

    https://www.cnblogs.com/woaixuexi9999/p/9247705.html

  5. 【洛谷4424】[HNOI_AHOI2018]寻宝游戏(我也不知道括号里该写啥)

    题目 洛谷 4424 分析 感觉思路比较神仙. 对于按位与和按位或两种运算,显然每一位是独立的,可以分开考虑. 对于某一位,「与 \(0\)」会将这一位变成 \(0\),「或 \(1\)」会将这一位变 ...

  6. (转)宽字节编码类型的XSS

    今晚又看了一遍PKAV-心上的瘦子写的xss腾讯系列的例子,收获挺大的,其中对宽字节注入有了更深的了解,又查找了一些相关的资料,整理一下,以备以后查阅 参考文档: http://book.2cto.c ...

  7. Tensorflow下指定显卡占用比例参数配置

    tensorflow在训练时默认占用所有GPU的显存. 可以通过以下方式解决该问题: 1.在构造tf.Session()时候通过传递tf.GPUOptions作为可选配置参数的一部分来显式地指定需要分 ...

  8. mong 的 安装 和测试

    <hr>

  9. Ogre源码学习-Image和Texture

    以下文字来自源码注释: Image类:保存未压缩的图片数据,是唯一一个可以加载纹理的类.Image对象调用Codec对象来为图片数据解码. 通常,当在图片被加载前需要对它进行额外的处理,或者你想把它复 ...

  10. Java容器解析系列(12) LinkedHashMap 详解

    LinkedHashMap继承自HashMap,除了提供HashMap的功能外,LinkedHashMap还是维护一个双向链表(实际为带头结点的双向循环链表),持有所有的键值对的引用: 这个双向链表定 ...