#include<stdio.h>
#include<stdlib.h>

#define num 8

struct nearnode{

int order;
nearnode* pnext;
};

struct topnode{

char data[20];
nearnode* phead;
};

struct Gra{

topnode top[num];
int topnum;
int sidenum;
};

void create(Gra* gra){

puts("请输入图的弧数\n");
scanf("%d",&gra->sidenum);
gra->topnum = num;
for(int i = 0;i < num;i++){

printf("请输入第%d个定点储存的数据信息\n",i+1);
scanf("%s",gra->top[i].data);
}
for(int i = 0;i < gra->sidenum;i++){

int temp_one;
int temp_two;

printf("请输入第%d条边的起始顶点\n",i+1);
scanf("%d",&temp_one);
printf("请输入第%d条边的终结顶点\n",i+1);
scanf("%d",&temp_two);

nearnode* newnode_one = NULL;
newnode_one = (nearnode*)malloc(sizeof(nearnode));
newnode_one->pnext = NULL;
newnode_one->order = temp_one;

if(gra->top[temp_two].phead == NULL){
gra->top[temp_two].phead = newnode_one;
}
else{

for(;gra->top[temp_two].phead->pnext != NULL;gra->top[temp_two].phead = gra->top[temp_two].phead->pnext); 
gra->top[temp_two].phead->pnext = newnode_one;
}

nearnode* newnode_two = NULL;
newnode_two = (nearnode*)malloc(sizeof(nearnode));
newnode_two->pnext = NULL;
newnode_two->order = temp_two;

if(gra->top[temp_one].phead == NULL){

gra->top[temp_one].phead = newnode_two;
}
else{

for(;gra->top[temp_one].phead->pnext != NULL;gra->top[temp_one].phead = gra->top[temp_one].phead->pnext); 
gra->top[temp_one].phead->pnext = newnode_two;
}

}
}

void viewer(Gra* gra){

for(int i = 0;i < gra->topnum;i++){

printf("第%d个边结点对应的是%c顶点的信息\n",i+1,i+65);
}

puts("\n\n");

for(int i = 0;i < gra->topnum;i++){

printf("第%d个顶点储存的信息是:%s\n",i+1,gra->top[i].data);
}

puts("\n\n");

for(int i = 0;i < num;i++){

for(;gra->top[i].phead != NULL;gra->top[i].phead = gra->top[i].phead->pnext){

printf("与第%d个顶点相连的边结点的序号为%d\n",i+1,gra->top[i].phead->order);
}
}
}

int main(int argc,char** argv){

Gra* gra = NULL;
gra = (Gra*)malloc(sizeof(Gra));
create(gra);
viewer(gra);
}

C语言数据结构无向图的更多相关文章

  1. C语言数据结构与算法之深度、广度优先搜索

    一.深度优先搜索(Depth-First-Search 简称:DFS) 1.1 遍历过程: (1)从图中某个顶点v出发,访问v. (2)找出刚才第一个被顶点访问的邻接点.访问该顶点.以这个顶点为新的顶 ...

  2. 读谭浩强C语言数据结构有感(1)

    1.什么是数据结构? 数据结构,就是我们计算机内部的运算,编程语言的基础工作模式吧,个人总结的 = = !! 数据:说简单一点,就是计算机二进制机器码,然后通过一些复杂的操作,变为复杂的语言. 数据元 ...

  3. C语言数据结构----栈与递归

    本节主要说程序中的栈函数栈的关系以及栈和递归算法的关系. 一.函数调用时的栈 1.程序调用时的栈是也就是平时所说的函数栈是数据结构的一种应用,函数调用栈一般是从搞地质向低地址增长的,栈顶为内存的低地址 ...

  4. 第二章 R语言数据结构

    R语言存储数据的结构包括:标量.向量.矩阵.数组.数据框和列表:可以处理的数据类型包括:数值型.字符型.逻辑型.复数型和原生型. 数据结构 向量 向量是用来存储数值型.字符型或逻辑型数据的一维数组.单 ...

  5. C语言---数据结构(内建,数组,自定义)

    数组是一组有序数据的集合,每个元素都属于同一个数据类型. 一维数组的定义: 类型符  数组名[常量表达式] 常量表达式中,可以包括常量和符号常量,int a[3+5]是合法的.但是不能包含int a[ ...

  6. C语言数据结构之图的基本操作

    本博文是是博主在学习数据结构图的这一章知识时做的一些总结,代码运行环境:visual studio2017 纯C语言 ,当然掌握了方法,你也可以试着用其它的语言来实现同样的功能. 下面的程序主要实现了 ...

  7. C语言数据结构之二叉树的实现

    本篇博文是博主在学习C语言算法与数据结构的一些应用代码实例,给出了以二叉链表的形式实现二叉树的相关操作.如创建,遍历(先序,中序后序遍历),求树的深度,树的叶子节点数,左右兄弟,父节点. 代码清单如下 ...

  8. [C语言] 数据结构-预备知识指针

    所有的伟大源于一个勇敢的开始 数据结构预备知识 指针 1.指针:是C语言的灵魂,指针=地址 地址:内存单元的编号 指针变量:存放内存单元地址的变量 int *p;//p是指针变量,int *表示该p变 ...

  9. [C语言] 数据结构-衡量算法的标准

    1.衡量算法的标准 算法 解题的方法和步骤 衡量算法的标准 1.时间复杂度 大概程序要执行的次数,而非执行的时间,不同的机器运行时间肯定不一样. 2.空间复杂度 算法执行过程中大概所占用的最大内存 3 ...

随机推荐

  1. Docker深入浅出系列 | 5分钟搭建你的私有镜像仓库

    Docker已经上市很多年,不是什么新鲜事物了,很多企业或者开发同学以前也不多不少有所接触,但是有实操经验的人不多,本系列教程主要偏重实战,尽量讲干货,会根据本人理解去做阐述,具体官方概念可以查阅官方 ...

  2. 聊一聊React中虚拟DOM

    1. 什么是虚拟 DOM 在 React 中实际上是 render 函数中return 的内容会生成 DOM,return 中的内容由两部分组成,一部分是 JSX ,另一部分就是 state 中的数据 ...

  3. (转)浅析epoll – epoll函数深入讲解

    原文地址:http://www.cppfans.org/1418.html 浅析epoll – epoll函数深入讲解 前一篇大致讲了一下epoll是个什么东西,优点等内容,这篇延续上一篇的内容,主要 ...

  4. 聊聊count(*)

    count(*) 的实现方式 MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count(*) 的时候会直接返回这个数,效率很高 InnoDB 引擎就麻烦了,它执行 count(*) 的时候 ...

  5. 使用vue-router+vuex进行导航守卫(转)

    前言:想要实现登录后才能进入主页等其他页面,不然都会跳转到登录页.但是Vuex有个不够完美的地方,一旦刷新页面就会没了,所以还要用到localStorage. 一.router.js: import ...

  6. Layui select下拉框改变之 change 监听事件(转)

    在layui中使用 jquery 触发select 的 change事件无效 使用layui.use监听select事件 <select lay-filter="demo" ...

  7. Codeforces Round #369 (Div. 2)E

    ZS and The Birthday Paradox 题目:一年有2^n天,有k个人,他们的生日有冲突的概率是多少?答案用最简分数表示,分子分母对1e6+3取模.1 ≤ n ≤ 10^18, 2 ≤ ...

  8. 源码解读 Golang 的 sync.Map 实现原理

    简介 Go 的内建 map 是不支持并发写操作的,原因是 map 写操作不是并发安全的,当你尝试多个 Goroutine 操作同一个 map,会产生报错:fatal error: concurrent ...

  9. python函数版ATM

    最近系统的学习python函数知识点,感觉在面向对象之前,函数的功能确实强大. 最近使用函数写了ATM项目,虽然需求简单但也有很多知识点需要注意,这个项目把python基础的很多知识点都用上了. 前前 ...

  10. MySQL数据备份与恢复(二) -- xtrabackup工具

    上一篇介绍了逻辑备份工具mysqldump,本文将通过应用更为普遍的物理备份工具xtrabackup来演示数据备份及恢复的第二篇内容. 1.  xtrabackup 工具的安装 1.1  安装依赖包 ...