文章

6

粉丝

0

获赞

1

访问

183

头像
2024年计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年9月10日 18:42
阅读数 37

(1) 首先, 遍历领接矩阵统计出各个顶点的入度, 存入一维数组。然后遍历这个一维数组, 找入度为0的顶点, 如果能找到大于1个或找不到的话, 说明不存在唯一的括扑序列或不存在括扑序列, 直接返回0即可。将这个顶点的访问信息设为已访问, 遍历这个顶点的所有出边, 然后将领接顶点的入度减一, 再重复之前查找入度为0的顶点步骤。直到遍历完所有顶点后, 返回1, 表示存在唯一括扑序列。

(2) 

typedef struct //图的类型定义
{
    int numVertices, numEdges; //图的顶点数和有向边数
    char verticesList[MAXV]; //项点表,MAXV为以定义常量
    int Edge[MAXV][MAXV]; //知接矩阵
}MGraph;

int uniquely(MGraph G) {
  int n = G.numVertices; // 保存顶点数
  int visit[n]; 
  int d[n];
  for (int i = 0;i < n;++i) { // 遍历记录顶点入度信息
    for (int j = 0;j < n;++j) {
      if (G.Edge[i][j] == 1) {
         d[i]++;
         d[j]++;
      }
    }
  }

  for (int i = 0;i < n;++i) {
    int c = 0;
    int t = -1;
    for (int j = 0;j < n;++j) { // 遍历, 看看哪个没访问过的顶点入度为0
      if (d[j] == 0 && visit[j] != 1) {
        c++;
        t = j;
      }
    }

    if (c != 1) { // 如果入度为0的顶点数量不是一个, 就不存在唯一的括扑排序
      return 0;
    }

    if (t != -1) { // 得到唯一的入度为0的顶点
      visit[t] = 1...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发