关键词不能为空

当前您在: 主页 > 英语 >

数据结构-拓扑排序-实验报告与代码

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-01 21:44
tags:

-

2021年2月1日发(作者:鲍文病)
















实验报告七


----


拓扑排序







< br>分













2


、实现有向图的创建、遍历




1


、采用邻接表法的存储结构来定义 有向图



3


、实现栈的创建及其基本操 作(进栈、退栈、判空)



4


、求图中顶点的入度


















< br>数

























< br>流

























< br>是








1


















< br>输






2




















< br>


3
















,并




。当






,进

< p>















a



退










V



< br>(


b










Vj



直< /p>





Vk




Vk








4









,直



< p>








。如

< br>每





,则









序< /p>

























< br>栈







































信息工程学院







1














设定栈的抽象数据类型定义:



ADT Stack {


数据对象:


D={


a


i


|


a


i



CharSet


,i=1,2,3,…. .,n,n>=0;}



数据关系:


R ={<


a


i


?


1



a


i


> |


a


i


?


1< /p>



a


i


∈D,i =2,…,n}





存储结构:



(1)


表结点










typedef struct ArcNode


{



i


nt adjvex;



s


truct ArcNode *nextarc;


}ArcNode;


(2)


链表的存储结构



typedef struct VNode


{



i


nt data;



A


rcNode *firstarc;


}VNode,AdjList[MAX_VEXTEX_NUM];


(3)


图的存储结构





































信息工程学院







2




















typedef struct


{



A


djList vertices;



i


nt vexnum, arcnum;


}ALGraph;


(4)


栈的存储结构



typedef struct



{



E


lemType *base;



E


lemType *top;



i


nt stacksize;


}SqStack;



< p>
















的< /p>









< p>
















所< /p>







。包



:人





< p>


、主







< br>设

















1







1



< br>迎









2


)输入顶点与边的关系,并得到拓扑排序







































信息工程学院







3

















2







1








void InitStack(SqStack *S)//







{






S->base = (ElemType *) malloc(STACK_INIT_SIZE * sizeof


(ElemType));






if (!S->base) {










printf(











exit(1);






}






S->top = S->base;






S->stacksize = STACK_INIT_SIZE;



}





2








int Pop(SqStack *S, ElemType *e)//







{






if (S->top == S->base) {










return ERROR;






}





































信息工程学院







4



















*e = *--S->top;






return 0;


}


3








void Push(SqStack *S, ElemType e)//




操< /p>




{






if (S->top - S->base >= S->stacksize) {










S->base = (ElemType *) realloc(S


->base, (S->stacksize +


STACKINCREMENT) * sizeof (ElemType));











if (!S->base) {














printf(















exit(1);










}










S->top = S->base + S->stacksize;










S->stacksize += STACKINCREMENT;






}






*S->top++ = e;


}


4











int StackEmpty(SqStack *S)//










{






if (S->top == S->base)










return OK;






else










return ERROR;


}


5



构< /p>










void CreatGraph(ALGraph *G)//






{






int m, n, i;






ArcNode *p;






printf(


******n






printf(


















使







n


















printf(





















----n


p rintf(


n



printf(











:



scanf(



for (i = 1; i <= G


->vexnum; i++) {





































信息工程学院







5



















































G->vertices[i].data = i;







G->vertices[i].firstarc = NULL;



}


for (i = 1; i <= G


->arcnum; i++) //


输< /p>









< p>


{






printf(

< br>请















:






scanf(







while (n < 0 || n > G


->vexnum || m < 0 || m > G


->vexnum) {














printf(

< br>输

















:














scanf(











}










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











if (p == NULL) {














printf(















exit(1);










}










p->adjvex = m;










p->nextarc = G->vertices[n].firstarc;










G->vertices[n].firstarc = p;







}



}


6












void FindInDegree(ALGraph G, int indegree[])//










{






int i;






for (i = 1; i <= i++) {











indegree[i] = 0;






}






for (i = 1; i <= i++) {











while (es[i].firstarc) {















indegree[es[i].firstarc


->adjve x]++;














es[i].firstarc = es[i].firstarc


->nextarc;










}






}


}


7










void TopologicalSort(ALGraph G) //








{





































信息工程学院







6

-


-


-


-


-


-


-


-



本文更新与2021-02-01 21:44,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/595297.html

数据结构-拓扑排序-实验报告与代码的相关文章