当前位置: 首页 > news >正文

温州网站东营做网站seo的

温州网站,东营做网站seo的,上海房产网安居客,流控插件wordpress这段代码通过拓扑排序对有向无环图进行排序。它创建了一个图结构#xff0c;其中包含节点、邻接表和入度数组。然后#xff0c;通过输入添加了一些边#xff0c;创建了图的结构。接着#xff0c;使用拓扑排序算法对图进行排序#xff0c;并将排序后的结果打印输出。 首先… 这段代码通过拓扑排序对有向无环图进行排序。它创建了一个图结构其中包含节点、邻接表和入度数组。然后通过输入添加了一些边创建了图的结构。接着使用拓扑排序算法对图进行排序并将排序后的结果打印输出。 首先它定义了Node结构来表示图中的节点包含了节点值和指向下一个节点的指针。然后Graph结构表示整个图包含了邻接表、入度数组以及节点数量。 在createNode函数中它创建了一个新的节点并为其分配内存。createGraph函数用于创建一个图结构并初始化邻接表和入度数组。 addEdge函数用于在图中添加边。对于有向图中的每条边它在adjList中的源节点位置创建一个新节点并将其添加到邻接表的头部并且同时更新了目标节点的入度。 enqueue和dequeue函数是用于实现队列的基本操作用于在拓扑排序算法中管理节点的顺序。 topologicalSort函数实现了拓扑排序算法。首先它找到入度为0的节点并将其加入队列。接着它开始迭代处理队列中的节点将其邻接节点的入度减1并将入度减为0的邻接节点加入队列。这个过程一直持续到队列为空。如果最后排序的节点数和图的节点数不一致说明图中存在环路这种情况下会返回NULL。 在main函数中它接收用户的输入并创建图然后进行拓扑排序。最后根据排序结果输出结果。 这段代码执行过程中对节点编号进行了处理使得输出结果中的节点编号从1开始并按照拓扑排序的顺序输出。 #include stdio.h #include stdlib.h#define MAX_NODES 200000struct Node {int value;struct Node* next; };struct Graph {struct Node* adjList[MAX_NODES];int inDegree[MAX_NODES];int numNodes; };struct Node* createNode(int value) {struct Node* newNode (struct Node*)malloc(sizeof(struct Node));newNode-value value;newNode-next NULL;return newNode; }struct Graph* createGraph(int numNodes) {struct Graph* graph (struct Graph*)malloc(sizeof(struct Graph));graph-numNodes numNodes;for (int i 0; i numNodes; i) {graph-adjList[i] NULL;graph-inDegree[i] 0;}return graph; }void addEdge(struct Graph* graph, int src, int dest) {struct Node* newNode createNode(dest); //让目标那条边直接成为graph-adjList[src]。这样一来每个graph-adjList[src]就会是指向的边 //当时候入度为0的节点跳出时就可以 int adjNode temp-value; graph-inDegree[adjNode]--; //直接让graph-adjList[src]指向的入度减一并遍历就很简单了newNode-next graph-adjList[src];graph-adjList[src] newNode; //这里要注意dest是被指向的边所以它的入度要加一graph-inDegree[dest]; }void enqueue(int queue[], int* rear, int node) {queue[(*rear)] node; }int dequeue(int queue[], int* front) {return queue[(*front)]; }int* topologicalSort(struct Graph* graph) {int* result (int*)malloc(graph-numNodes * sizeof(int));int front 0, rear 0;int queue[MAX_NODES];int idx 0;for (int i 0; i graph-numNodes; i) {if (graph-inDegree[i] 0) {enqueue(queue, rear, i);}}while (front ! rear) {int currentNode dequeue(queue, front);result[idx] currentNode;struct Node* temp graph-adjList[currentNode];while (temp ! NULL) {int adjNode temp-value;graph-inDegree[adjNode]--;if (graph-inDegree[adjNode] 0) {enqueue(queue, rear, adjNode);}temp temp-next;}}if (idx ! graph-numNodes) {free(result);return NULL; // Graph contains cycle}return result; }int main() {int n, m;scanf(%d %d, n, m);struct Graph* graph createGraph(n);for (int i 0; i m; i) {int u, v;scanf(%d %d, u, v); //这里u - 1, v - 1其实是为了满足数组从索引0开始存储因为节点是123...这样算的, //而我想从012.... //输出的时候要加1回来addEdge(graph, u - 1, v - 1);}int* result topologicalSort(graph);if (result NULL) {printf(-1\n);} else {for (int i 0; i n; i) {if (i n - 1) {printf(%d, result[i] 1);//加1回来} else {printf(%d , result[i] 1);}}free(result);}return 0; }
http://www.pierceye.com/news/184787/

相关文章:

  • 网站域名变更怎么查英国做网站的人
  • 嘉兴公司的网站设计wordpress 送女友
  • 10个免费的黑科技网站电子元器件商城网站建设
  • 动画型网站做免费推广的平台
  • 购物网站怎么创建深圳地区5g微波网站建设计划
  • 安做省民改厅网站网站带支付模板
  • 做什么网站吸引人建设网站模板
  • 微信官网网站模板京东云网站建设
  • python 网站开发 前端利用vps做网站
  • 网站做下载功能南昌专业做网站的
  • 白山网站设计网站首页鲁大师
  • 网站怎样和首页做链接地址七星彩的网站怎么做的
  • 深圳h5模板建站wordpress 整合ucenter
  • 企业网站策划书下载google adsense
  • 安徽网站建设公司排名竞价托管就选微竞价
  • 笑话小网站模板html做移动网站快速排
  • c2c电子商务网站有哪些电商设计师和美工有什么区别
  • 长春电商网站建设价格低公司网站过期未续费会怎样
  • 农业综合管理网站建设做网站前期工作
  • 域名更换网站网站维护工作内容
  • 网站水印设置作教程长沙求职网招聘网
  • 八年级微机网站怎么做wordpress 链接转换
  • ppt做的模板下载网站有哪些内容wordpress 4.5.3中
  • 网站开发需求文档prd模板iis wordpress 404
  • 灰色链网站建设偃师建网站那家公司好
  • 文化网站前置审批网站运营系统
  • 现在做网站用什么学校网站的建设需求
  • 网页制作与网站建设技术大全 pdfhtml5移动端网站开发教程
  • 做任务可以给钱的网站php响应式网站模板下载
  • 平面素材设计网站东莞房价2023年最新房价走势