问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据结构课程设计题

发布网友 发布时间:2022-04-25 14:51

我来回答

1个回答

热心网友 时间:2023-10-10 01:22

最短路径问题
#include "datastru.h"
#include <stdio.h>
#include <malloc.h>
#define MAX 10000

MGRAPH create_mgraph(){
/*建立有向图的邻接矩阵结构*/
int i, j, k, h;
MGRAPH mg;

mg.kind = 3;
printf("\n\n输入顶点数和边数(用逗号隔开) : ");
scanf("%d,%d", &i,&j);
mg.vexnum = i; /*存放顶点数在mg.vexnum中 */
mg.arcnum = j; /*存放边点数在mg.arcnum中*/
fflush(stdin);
for(i = 0; i < mg.vexnum; i++)
{ printf("输入顶点 %d 的值 : ",i + 1); /*输入顶点的值*/
scanf("%d", &mg.vexs[i]);
fflush(stdin);}
for(i = 0; i < mg.vexnum; i++) /*邻接矩阵初始化*/
for(j = 0; j < mg.vexnum; j++)
mg.arcs[i][j] = MAX;
for(k = 1; k <= mg.arcnum; k++)
{ printf("输入第 %d 条边的起始顶点和终止顶点(用逗号隔开): ",k);
scanf("%d,%d",&i,&j); /*输入弧的起始顶点和终止顶点*/
fflush(stdin);
while(i < 1 || i > mg.vexnum || j < 1 || j > mg.vexnum)
{ printf("输入错,重新输入: ");
scanf("%d,%d", &i, &j);}
printf("输入此边权值 : "); /*输入弧上之权值*/
scanf("%d", &h);
mg.arcs[i - 1][j - 1] = h;}
return mg;
}

main()
{
MGRAPH mg;
int cost[MAXLEN][MAXLEN];
int path[MAXLEN], s[MAXLEN];
int dist[MAXLEN];
int i, j, n, v0, min, u;

printf("\n求有向图单源点最短路径\n");
mg = create_mgraph(); /*建立有向图的邻接矩阵结构*/
printf("\n\n起始顶点为 : "); /*有向图中顶点的编号从1编起*/
scanf("%d", &v0);
v0 --;
n = mg.vexnum;
for(i = 0; i < n; i++) /*cost矩阵初始化*/
{for(j = 0; j < n; j++)
cost[i][j] = mg.arcs[i][j];
cost[i][i] = 0;}
for(i = 0; i < n; i++)
{dist[i] = cost[v0][i]; /*dist数组初始化*/
if(dist[i] < MAX && dist[i] > 0) /*path数组初始化*/
path[i] = v0;}
for(i = 0; i < n; i++) /*s数组初始化*/
s[i] = 0;
s[v0] = 1;
for(i = 0; i < n; i++) /*按最短路径递增算法计算*/
{ min = MAX ;
u = v0;
for(j = 0; j < n; j++)
if(s[j] == 0 && dist[j] < min)
{min = dist[j];
u = j;}
s[u] = 1; /*u顶点是求得最短路径的顶点编号*/
for(j = 0; j < n; j++)
if(s[j] == 0 && dist[u] + cost[u][j] < dist[j])/*调整dist*/
{dist[j] = dist[u] + cost[u][j];
path[j] = u;} /*path记录了路径经过的顶点*/
}
for(i = 0; i < n; i++) /*打印结果*/
if(s[i] == 1)
{u = i;
while(u != v0)
{printf("%d <- " , u + 1);
u = path[u];}
printf("%d ", u + 1);
printf(" d = %d\n", dist[i]); /*有路径*/
}
else
printf("%d <- %d d= MAX\n ", i + 1, v0 + 1);/*无路径*/
printf("\n\n");
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
易企秀如何分享链接给微信好友?-易企秀分享链接给微信好友的方法 华为荣耀3c系统辅助功能服务老是自动关闭,求解决方案。 我用一键清理忽... 华为荣耀3c手机双击唤醒屏幕不好用了怎么办? 荣耀手机刷机包从哪下 木地板为啥走过会响 瓷砖块要斜成几度角人踩上去不会烂 刚出生的婴儿肚子胀怎么办 新生儿涨肚子按摩图 刚生小宝宝胀气怎么办 白果怎么炒好吃 白果可以制作哪些美食 数据结构课程设计题:链表操作 一、 设计目的 1.掌握线性表的在顺序结构和链式结构实现。 2.掌握线性表 几个数据结构的课程设计题目 《数据结构》课程设计 《数据结构》课程设计题目急急!!! 数据结构课程设计题目 1. 运动会分数统计   任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个 我的数据结构课程设计!!! 一道数据结构课程设计题目 数据结构课程设计题目:猴子选大王问题 安卓手机qq 什么都很正常 就是一点进群对话马上闪退 刚刚还好好的 重启了也没用 在线等解决方法 东方卫视《加油2008》女主持人是谁啊?有她的个人资料吗? 上海东方卫视女主持人何捷的出生年月? 谁知道东方卫视看东方主持人尹红的个人资料 东方卫视主持人 这个人是谁 求简介 东方卫视看东方节目的这女主持人叫什么名字? 东方卫视主持人丹丹近况如何? 东方卫视的女主持人有哪些? 上海女主持人有哪些? 我想问下上海电视台的丹丹,贝贝,万蒂妮都是几几年出生的啊? 东方卫视有几位女主持人 她们叫什么? 陈蓉房海燕暂时无法出镜,单位里还有哪些当红的女主持人? 数据结构课程设计题目,图的建立以及遍历。 数据结构课程设计,求大神,只做其中一题 紧急!数据结构课程设计 题目:哈夫曼树的建立(由键盘输入各个节点,并建立二叉树,能实现对二叉树的查询 《数据结构》的课程设计,题目是请设计一个算法,把二叉树的叶子结点按从左到右的顺序连成。 求《数据结构》课程设计(题目:算术表达式求值) 求问!!!数据结构课程设计题:病毒测试程序。(c语言) 数据结构-课程设计:二叉排序树的实现 怎样洗螃蟹和做螃蟹 为什么QQ中有一个群只要点开QQ就会闪退 ACA电烤箱顶部的煎烤盘要一直放着么? ACA烤炉上配的那个煎烤盘可以干嘛啊 ACA烤箱ATO-MF24C烤盘能直接放在加热管上吗 ACA16L烤箱的烤盘那里可以买到? ACA电烤箱 VTO-9F-1 容量:9L 功率:800w 包装尺寸:408*293*283(mm) 这个烤箱能放多少寸的烤盘啊 请问ACA18升的烤箱最大可以几寸的PIZZA烤盘? 数码暴龙亚古兽所有进化形态的图 数码宝贝1,2部所有数码宝贝进化图 口袋妖怪数码宝贝汉化版亚古兽怎么进化成战斗暴龙兽我只能进化成胜利暴龙兽 数码宝贝进化图鉴 数码宝贝中亚古兽可以进化成什么?