sizeof(VNode)); if (!vertex_list) { printf(" 内存分配失败"); return -1; } create_graph(vertex_list, n); // 建立邻接表存储图 topological_sort(vertex_list, n); // 进行拓扑排序 for (i= 0;i != n; ++i) { printf("%d ", iarray[i]); } printf("\n 请输入课程编号: "); while (scanf("%d", &num) != EOF) { if (num >= n) { printf(" 输入有误\n"); continue; } printf(" 该课程所有的前序课程为: "); i= 0; while (iarray[i] != num) { strcpy(course, "C"); itoa(iarray[i++], temp, 10); strcat(course, temp); printf("%s ", course); } printf("\n 请输入课程编号: "); 数据结构实验预习报告第 5页共 5页} for (i= 0;i != n; ++i) { for (p= vertex_list[i].first_arc; p;p= p->next) { free(p); }} free(vertex_list); return 0;} 三、思考题 1. 如何用图来存储图形或网络? 答:用图的矩阵和邻接表表示来储存图形或网络。 2. 分析图中多种存储方法的使用场合。答: 用邻接矩阵表示顶点间的相邻关系, 用一个顺序表来存储顶点。图的邻接表储存是一种链式储存结构,对图中每个顶点建立一个单链表。 3. 在拓扑排序算法中,需要用到那些基本的数据结构? 答:图,链表,矩阵,指针