c语言 拓补排序源代码,拓扑排序C语言代码

#include

#include

#include

#include

//----------------公共的-----------------

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define INFEASIBLE -1

#define OVERFLOW -2

//---------------------------------------

//*************栈的初始大小和增量***************

#define STACK_INIT_SIZE 100

#define STATCKINCREMENT 10

//**********************************************

//*************栈的元素类型***************

typedef int SElemType;

typedef struct SqStack

{

SElemType *base;

SElemType *top;

SElemType stacksize;

}SqStack;

//****************************************

#define MAX_VERTEX_NUM 20

#define MAX 20

typedef int Boolean;

typedef int Status;

typedef char InfoType;

typedef struct ArcNode{ //邻接表的弧

int adjvex; //该弧所指向的顶点的位置

InfoType *info; //该弧相关信息的指针(如:权值等)

struct ArcNode *nextarc; //指向下一条弧的指针

}ArcNode;

typedef int VertexType;//每个顶点的值的类型

typedef struct VNode//邻接表的顶点

{

VertexType data;

ArcNode *firstarc;

}VNode,AdjList[MAX_VERTEX_NUM];

typedef struct{

AdjList vertices; //邻接表

int vexnum,arcnum;//图的当前顶点数和弧数

int kind; //图的种类标志 0为无向图 1为有向图

}ALGraph;

//****************栈的使用函数*********************

int InitStack(SqStack &s){//栈的初始化

s.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));

if(!s.base)

{

return 0; //存储分配失败

}

s.top=s.base;

s.stacksize=STACK_INIT_SIZE;

return 1;

}

int Push(SqStack &s,SElemType e){ //元素的入栈

if(s.top-s.base>=s.stacksize)//栈满,追加存储控件

{

s.base=(SElemType *)realloc(s.base,(s.stacksize+STATCKINCREMENT)*sizeof(SElemType));

if(!s.base) return 0;//存储分配失败

s.top=s.base+s.stacksize;

s.stacksize+=STATCKINCREMENT;

}

*(s.top)++=e;

return 1;

}

int Pop(SqStack &s,SElemType &e){//元素的出栈

if(s.top==s.base) return 0;

e=*--s.top;

return 1;

}

int StackEmpty(SqStack s){//若S为为空战,则返回1,否则返回0

if(s.top==s.base) return 1;

else return 0;

}

//*************************************************

Status CreateDG(ALGraph &g){ /* 邻接表建立有向图 */

int i,j,k;

ArcNode *p;

printf("请输入顶点数和边数(格式为:顶点数,边数):");

scanf("%d,%d",&i,&j);

getchar();

g.vexnum=i;g.arcnum=j;

for(i=1;i<=g.vexnum;i++)//输入顶点

{

printf("请输入第%d个顶点的值:",i);

scanf("%d",&g.vertices[i].data);

getchar();

g.vertices[i].firstarc=NULL;

}

printf("输入边的信息(输入格式为:i,j)\n");

for(i=1;i<=g.arcnum;i++) /* 输入弧的信息 */

{

printf("请输入第%d条边的信息:",i);

scanf("%d,%d",&j,&k);

getchar();

p=(ArcNode *)malloc(sizeof(ArcNode));

p->adjvex=k;

p->nextarc=g.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

visual studio 正则表达式 查找与替换文本

好多时候想要重构一些代码&#xff0c;但是修改起来发现很麻烦&#xff0c;因为简单的文本替换不能满足需求&#xff0c;这时候就要借助ide的力量了。还好visual studio 2010支持正则表达式查找和替换。如下图所示&#xff1a; document.all.domElementA.style.visibility hid…

51 Python - 装饰器 参数化装饰器——装饰器更通用

05参数化装饰器——装饰器更通用 参数化装饰器如何理解&#xff0c;简单理解就是让装饰器可以通用。场景举例&#xff0c;现在有个需求要改某一段文字&#xff0c;既要加<P>标签&#xff0c;又要加<B>&#xff0c;还有加<Div>。是不是意味着需要定义多个装饰…

手机android怎么开机画面,Android使用BroadcastReceiver实现手机开机之后显示画面的功能...

本文实例讲述了Android使用BroadcastReceiver实现手机开机之后显示画面的功能。分享给大家供大家参考&#xff0c;具体如下&#xff1a;在此例中介绍了怎样使用BroadcastRececiver。使用BroadcastReceiver需要继承这个类&#xff0c;并且重写public void onReceiver(Context co…

[html] HTML采用的是RGB颜色还是CMYK颜色?为什么?

[html] HTML采用的是RGB颜色还是CMYK颜色&#xff1f;为什么&#xff1f; 用在电脑或者手机上显示的大部分都是RGB&#xff0c;用于需要印刷的都用CMYK 并且不同的显示器色域不同会导致色差&#xff0c;不同浏览器也有自己的调色板&#xff0c;后面总结出来过一套web安全色&am…

Registered Nurse in the US

注册护士移民美国的条件美国护士RN考试介绍美国注册护士考试复习美国各州注册护士考试要求CGFNSRegistered nurseTop Paid Registered Nurses 转载于:https://www.cnblogs.com/sbxlm/p/3655784.html

安卓突然自动关机 android正在启动,华为手机开机重启后老是显示安卓正在启动优化应用是为什么?...

建议进入Recovery模式执行双清wipe操作。Recovery模式指的是一种可以对安卓机内部的数据或系统进行修改的模式(类似于windowsPE或DOS)。在这个模式下可以刷入新的安卓系统&#xff0c;或者对已有的系统进行备份或升级&#xff0c;也可以在此恢复出厂设置。进入recovery的方法&a…

[html] 写一个密码默认星号,但可以查看密码的输入框

[html] 写一个密码默认星号&#xff0c;但可以查看密码的输入框 <i class"icon-password"></i> <input type"text" v-if"pwdType" v-model"eyeTxt" /> <input type"password" placeholder"输入新…

算法天书

在cstheory.stackexchange看到一个很有营养的帖子,发起人从《来自天书的证明》(Proofs from the Book)得到灵感&#xff0c;意思是&#xff0c;假如有上帝的话&#xff0c;上帝又有一本“算法天书”的话&#xff0c;那么这本算法书里面应该有哪些算法呢&#xff1f;NB而踊跃的跟…

linux+右键快捷,LINUX 添加右键打开终端快捷方式

第一种方法&#xff1a;安装一个包&#xff0c;即可在右键里面添加一个“打开终端”的菜单。sudoapt-getinstallnautilus-open-terminal&#xff0c;安装完成&#xff0c;注销以后再回来&#xff0c;就可以右键打开terminal了)第二种方法&#xff1a;进入主目录的.gnome2/nauti…

python中numpy矩阵运算操作大全(非常全)!

python中numpy矩阵运算操作大全&#xff08;非常全&#xff09; //2019.07.10晚python矩阵运算大全1、矩阵的输出形式&#xff1a;对于任何一个矩阵&#xff0c;python输出的模板是&#xff1a;import numpy as np #引入numpy模块np1np.array([[1,2,3],[1,3,4],[1,6,2]...]) #数…

[html] 制作一个不规则形状有哪些方法可以实现?

[html] 制作一个不规则形状有哪些方法可以实现&#xff1f; canvas个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

android dialog 点击确定不消失,AlertDialog点击按钮不消失的实现方法

我有一个文本输入对话框&#xff0c;当我点击对话框上的“是”按钮&#xff0c;它会验证输入&#xff0c;然后关闭对话框。但是&#xff0c;如果输入错误&#xff0c;我想停留在同一个对话框中.。每一次&#xff0c;无论输入是什么&#xff0c;对话框应该自动关闭&#xff0c;当…

计算平面坐标某点(x,y)与原点(0,0)的角度

以前某个项目有一个功能需要手指滑动一个饼图。当时搬高中数学公式&#xff0c;并大量查询网络&#xff0c;花了两个小时把那个功能的数学算法搞定。 今天在看android下一段源码时&#xff0c;突然发现一个数学函数&#xff1a;Math.atan2 &#xff0c;一下子羞愧难当&#xff…

[html] 跨域通信有哪些方式?

[html] 跨域通信有哪些方式&#xff1f; JSONPWebSocketCORSHashpostMessage个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

《CLR via C#》 第三版的主要内容

Jeffrey Richter 在他的博客中叙述了 CLR via C#第三版的主要内容&#xff0c;和改动。原本如下&#xff1a;&#xff08;必要的地方加了翻译&#xff09; Last week I submitted the reaming chapters for my new book. It is now being edited and should be available right…

【摘录】MTK按键扫描原理及相关代码

一&#xff0e;MTK按键扫描原理&#xff1a; 不同的MTK平台内部提供的按键数目各有不同&#xff0c;但是扫描原理大致一样&#xff0c;这里以MTK6253为例来讲解记录。 MTK提供6*7共42个矩阵键盘&#xff0c;加上Power键总共43个按键&#xff0c;其中BB芯片引出6根行线ROW&#…

导致Android手机崩溃的壁纸,使用错误的壁纸会使你的Android手机崩溃

原标题&#xff1a;使用错误的壁纸会使你的Android手机崩溃现代智能手机是非常复杂的&#xff0c;能够显示大量的内容&#xff0c;并能浏览一系列复杂的色域、文件格式和媒体类型。然而&#xff0c;其中一些功能会以意想不到的方式影响到正常使用。Twitter用户Ice Universe发现…

[html] html哪个标签属性可以通过预解析DNS?

[html] html哪个标签属性可以通过预解析DNS&#xff1f; 1.<meta http-equiv"x-dns-prefetch-control" content"on"> 2.<link rel"dns-prefetch" href"//www.spreadfirefox.com">个人简介 我是歌谣&#xff0c;欢迎和大…

ZT 类模板Stack的实现 by vector

*//*第3章 类模板与函数相似&#xff0c;类也可以被一种或多种类型参数化。容器类就是一个具有这种特性的典型例子&#xff0c;它通常被用于管理某种特定类型的元素。只要使用类模板&#xff0c;你就可以实现容器类&#xff0c;而不需要确定容器中元素的类型。在这一章中&#…

android 学习链接大集合

http://m.cnblogs.com/50734/1581089.html?full1 Understanding User Interface in Android - Part 3: More Views&#xff08;译&#xff09; http://android.yaohuiji.com/ 这个大家应该都知道吧&#xff01;&#xff08;android学习指南&#xff09;转载于:https://www.cnb…