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

本文介绍如何使用邻接表来实现有向图的数据结构,并详细解释了创建过程中的关键步骤,包括初始化栈、顶点及边的输入等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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.

资源下载链接为: https://pan.quark.cn/s/9e7ef05254f8 在网页设计中,为图片添加文字是一种常见的需求,用于增强视觉效果或传达更多信息。本文将介绍两种常用的方法:一种是将图片设置为背景并添加文字;另一种是利用<span>标签结合CSS定位来实现。 这种方法通过CSS实现,将图片设置为一个容器(通常是<div>)的背景,然后在容器中添加文字。具体步骤如下: 创建一个包含文字的<div>元素: 使用CSS设置<div>的背景图片,并调整其尺寸以匹配图片大小: 如有需要,可使用background-position属性调整图片位置,确保文字显示在合适位置。这样,文字就会显示在图片之上。 另一种方法是将文字放在<span>标签内,并通过CSS绝对定位将其放置在图片上。步骤如下: 创建一个包含图片和<span>标签的<div>: 设置<div>为相对定位,以便内部元素可以相对于它进行绝对定位: 设置<span>为绝对定位,并通过调整top和left属性来确定文字在图片上的位置: 这种方法的优点是可以精确控制文字的位置,并且可以灵活调整文字的样式,如颜色和字体大小。 两种方法各有优势,可根据实际需求选择。在实际开发中,还可以结合JavaScript或jQuery动态添加文字,实现更复杂的交互效果。通过合理运用HTML和CSS,我们可以在图片上添加文字,创造出更具吸引力的视觉效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值