2021年香港特别行政区数据分析入门.docxVIP

  • 24
  • 0
  • 约1.57千字
  • 约 2页
  • 2021-11-02 发布于湖南
  • 举报
2021年香港特别行政区数据分析入门 2021年香港特别行政区数据分析入门 1、 将顶点放在两个集合V1和V2。对每个顶点,检查其和邻接点是否在同一个集合中,如是,则为非二部图。为此,用整数1和2表示两个集合。再用一队列结构存放图中访问的顶点。 int BPGraph (AdjMatrix g) //判断以邻接矩阵表示的图g 是否是二部图。 {int s[]; //顶点向量,元素值表示其属于那个集合(值1和2表示两个集合) int Q[];//Q为队列,元素为图的顶点,这里设顶点信息就是顶点编号。 int f=0,r,visited[]; //f和r 分别是队列的头尾指针,visited[]是访问数组 for (i=1;i Q[1]=1; r=1; s[1]=1;//顶点1放入集合S1 while(f {v=Q[++f]; if (s[v]==1) jh=2; else jh=1;//准备v 的邻接点的集合号 if (!visited[v]) {visited[v]=1; //确保对每一个顶点,都要检查与其邻接点不应在一个集合中 for (j=1,j if (g[v][j]==1){if (!s[j]) {s[j]=jh; Q[++r]=j;} //邻接点入队列 else if (s[j]==s[v]) return(0);} //非二部图 }//if (!visited[v]) }//while return(1); }//是二部图 [算法讨论] 题目给的是连通无向图,若非连通,则算法要修改。 2、因为后序遍历栈中保留当前结点的祖先的信息,用一变量保存栈的最高栈顶指针,每当退栈时,栈顶指针高于保存最高栈顶指针的值时,则将该栈倒入辅助栈中,辅助栈始终保存最长路径长度上的结点,直至后序遍历完毕,则辅助栈中内容即为所求。 void LongestPath(BiTree bt)//求二叉树中的第一条最长路径长度 {BiTree p=bt,l[],s[]; //l, s是栈,元素是二叉树结点指针,l 中保留当前最长路径中的结点 int i,top=0,tag[],longest=0; while(p || top0) { while(p) {s[++top]=p;tag[top]=0; p=p-Lc;} //沿左分枝向下 if(tag[top]==1) //当前结点的右分枝已遍历 {if(!s[top]-Lc !s[top]-Rc) //只有到叶子结点时,才查看路径长度 if(toplongest) {for(i=1;i //保留当前最长路径到l 栈,记住最高栈顶指针,退栈 else if(top0) {tag[top]=1; p=s[top].Rc;} //沿右子分枝向下 }//while(p!=null||top0) }//结束LongestPath 3、4、 void LinkList_reverse(Linklist L) //链表的就地逆置; 为简化算法, 假设表长大于2 p=L-next;q=p-next;s=q-next;p-next=NULL; while(s-next) q-next=p;p=q; q=s;s=s-next; //把L 的元素逐个插入新表表头 } q-next=p;s-next=q;L-next=s; }//LinkList_reverse

文档评论(0)

1亿VIP精品文档

相关文档