c语言结构图
① 如何用c语言绘制原理网络图
1、首先在记事本中祥橘完成网络关系文本的构建,如下图所示。
② 求c语言 N-S结构图或流程图
我给你写的是有10位选手,dev-c++运行通过
#include"stdio.h"
struct athelete
{
int a[10];//闭巧册表示该选手与其他选手是否有进行过比赛,1表示已经进行过,0表示还没有
int on;//表示当天该选手是否已经有比赛 1表示已经有比赛 0表示没有比赛
};
main()
{
int i,j,flag;
flag=0;
struct athelete ath[10];
//将所有运动员的on和a[10]赋值为0
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
ath[i].a[j]=0;
ath[i].on=0;
}
do{
flag++;
printf("\n第%d天的比赛安排:",flag);
for(i=0;i<10;i++)
for(j=0;j<10;j++)
if((j!=i)&&(ath[i].on==0)&&(ath[j].on==0)&&(ath[i].a[j]==0))//判断2个选手是否当天是否有比赛,并且以前是否比宽漏赛过
{
printf("\nath[%d] VS ath[%d] ",i,j);
ath[i].on=1;
ath[j].on=1;
ath[i].a[j]=1;
ath[j].a[i]=1;
break;
}
/轿宏/一天的比赛安排完成以后要将所有运动员的on属性归0
for(j=0;j<10;j++)
ath[j].on=0;
printf("\n----------------");
}while(flag!=9);
getchar();
}
③ c语言版数据结构图的一些基本操作函数如下,有三个地方不了解,请各位帮帮忙
(1)问题三:
i=LocateVex(*G,va);
j=LocateVex(*G,vb);
*G不是指针,是指针G所指对象,就是ALGraph类型。程序中多处使用变量G,但是不同的地方,含义不同。在void CreateGraph(ALGraph *G)里面,G是一个指针,因此,引用其所指对象,要用*G。其他情况下,ALGraph G,G不是指针。
(2)第一:这个void DFSTraverse(ALGraph G,void(*print)(char*)) 为什么不能直接调用print函数,像调用DFS函数一样?可以的,使用函数指针是为以后任意扩展输出程序,以适应不同需要,并且可以作为参数传递。
(3)第二:FirstAdjVex(G,G.vertices[v].data)为什么要用顶点,用了之后又取位置,而不直接用位置,会有什么漏洞吗?不会
int FirstAdjVex(ALGraph G,VertexType v)
{
ArcNode *p;
int v1;
v1=LocateVex(G,v);
p=G.vertices[v1].firstarc;
if(p)
return p->adjvex;
else
return -1;
}
利用已经定义的定位函数LocateVex直接定位顶点v,然后直接读取其firstarc,很自然的过程。
④ c语言结构体画图
就是定义一个班级结构体,里面有班号,老师和学生,学生又是一个结构体,有年龄,性别,名字等属性。不知道满不满足你的要求
⑤ C语言数据结构图的构建怎么弄
你好,#include "stdio.h"
#include "stdlib.h"
#include "malloc.h"
typedef struct Bnode //二叉树节点类型
{
int m;
struct Bnode *Lchild,*Rchild;
}Btnode, *BTptr;
typedef struct Dnode //队列节点类型
{
Btnode *pr;
struct Dnode *next;
}Qnode,*Qlink;
typedef struct //q节点类型
{
Qnode *front,*rear;
}linkqueue;
void Lcreatqueue(linkqueue *q) //创建队列
{
q->front=(Qlink)malloc(sizeof(Qnode));
q->front->next=NULL;
q->rear=q->front;
}
Btnode *Getqtop(linkqueue *Q)
{
return(Q->front->pr);
}
void Enqueue(linkqueue *q,Btnode *e) //入队
{
Qlink p;
p=(Qlink)malloc(sizeof(Qnode));
p->pr=e;
p->next=NULL;
if(q->front==NULL)q->front=p;
else
q->rear->next=p;
q->rear=p;
}
Btnode *DeQueue(linkqueue *q) //出队
{ Qlink p;
if(q->front==q->rear) return(NULL);
else
{
p=q->front;
q->front=p->next;
free(p);
return(q->front->pr);
}
}
BTptr creatbtree(BTptr BT)
{
int i=1;
linkqueue *Q=NULL;
BTptr q;
//BTptr s;
Btnode *p,*Del;
Q=(linkqueue *)malloc(sizeof(linkqueue));
Lcreatqueue(Q);
Q->rear=Q->front=NULL;
BT=NULL;
while(iLchild=p->Rchild=NULL;
p->m=i;
Enqueue(Q,p);
if(i==1)BT=p;
else
{
q=Getqtop(Q); //q指向二叉树的指针
if(p&&q)
if(i%2==0)q->Lchild=p;
else q->Rchild=p;
if(i%2==1) Del=DeQueue(Q);
}
i++;
}
return(BT);
}
main()
{BTptr *p=NULL;
p=creatbtree(p);
}
还是希望你自己会去编一遍
⑥ C语言数据结构图的操作
分也太少了吧!
⑦ C语言数据结构图求入度的算法
//思路:先把邻接表转换成逆邻接表,这样问题简单多了。
//数组out,保存各节点的入度
void countindegree(AdjList gin, AdjList gout)
{
//设有向图有n个顶点,建逆邻接表的顶点向量。
for (int i=1;i<=n;i++)
{
gin[i].vertex=gout[i].vertex;
gin.firstarc=null;
}
//邻接表转为逆邻接表。
for (i=1;i<=n;i++)
{
p=gout[i].firstarc;//取指向邻接表的指针。
while (p!=null)
{
j=p->adjvex;
s=(ArcNode *)malloc(sizeof(ArcNode));//申请结点空间。
s->adjvex=i;
s->next=gin[j].firstarc;
gin[j].firstarc=s;
p=p->next;//下一个邻接点。
}//while
}//endof for
//统计各节点的入度
for (i=0; i<n; i++)
{
p = gin[i].firstarc;
while(p ! = null)
{
out[i]++;
p = p->next;
} //endof while
} //endof for
}//endof function
⑧ 数据结构 图的基本操作要C语言的完整代码!!
#include<stdio.h>
#define n 6
#define e 8
void CREATGRAPH();
typedef char vextype;
typedef float adjtype;
typedef struct{
vextype vexs[n];
adjtype arcs[n][n];
}graph;
int main()
{
CREATGRAPH();
printf("创建成功!\n");
}
void CREATGRAPH()
{
graph *ga;
int i,j,k;
float w;
for(i=0;i<n;i++)
ga->vexs[i]=getchar();
for(i=0;i<n;i++)
for(j=0;j<n;j++)
ga->arcs[i][j]=0;
for(k=0;k<e;k++)
{
scanf("%d%d%f",&i,&j,&w);
ga->arcs[i][j]=w;
ga->arcs[j][i]=w;
}
printf("创建成功!\n");
}
没写完,,自己加加吧!