您现在的位置是:主页 > news > 搜索引擎优化专员/seo是指搜索引擎优化
搜索引擎优化专员/seo是指搜索引擎优化
admin2025/5/6 8:40:12【news】
简介搜索引擎优化专员,seo是指搜索引擎优化,网站建设费用如何做账,商业网站建设视频教程这题是参考大佬的博客的,给了我很多启发,里面我自己写了有很多注释了,现将其贴在下面: 题目 代码 #include <stdio.h> #include <stdlib.h> #define MAX 100 //定义一个结点 //边表 struct edgeNode {int headVex;/…
搜索引擎优化专员,seo是指搜索引擎优化,网站建设费用如何做账,商业网站建设视频教程这题是参考大佬的博客的,给了我很多启发,里面我自己写了有很多注释了,现将其贴在下面:
题目 代码
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
//定义一个结点
//边表
struct edgeNode
{int headVex;/…
这题是参考大佬的博客的,给了我很多启发,里面我自己写了有很多注释了,现将其贴在下面:
题目
代码
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
//定义一个结点
//边表
struct edgeNode
{int headVex;//相邻顶点字段struct edgeNode *next;//链字段
};
//定义一个头节点
//顶点表
struct vexNode
{int vex;//顶点信息struct edgeNode *head;//边表头指针
};
//定义图
struct graphList
{struct vexNode vex[MAX];int vexNum;//顶点数int edgeNum;//边个数
};
//定义队列
struct edgeNodeQueue
{int nodeQueue[MAX];int n;
};
//把函数提前申明会少报好多warning啊
void createNewGraphList (struct graphList *gList);
void clearVexNodes (struct graphList *gList);
int findVex (int vex,struct graphList *gList);
void createNewEdgeNode (int n,struct graphList *gList);
void existWay (struct graphList *gList);
int breadthFirstSearch (char flags[],struct graphList *gList,int cur,int find,struct edgeNodeQueue *queue);
void clearQueue(struct edgeNodeQueue *queue);
void pushQueue (struct edgeNodeQueue *queue,int vex);
void unshiftQueue (struct edgeNodeQueue *queue);int main()
{struct graphList gList;createNewGraphList (&gList);existWay (&gList);return 0;
}void createNewGraphList (struct graphList *gList)//建立图
{scanf ("%d%d",&(gList->vexNum),&(gList->edgeNum));//输入图的结点个数和边数clearVexNodes (gList);//!!注意这里不用加&int i;for (i=0;i<gList->vexNum;i++){scanf ("%d",&(gList->vex[i].vex));//输入顶点信息}int vex,n;for (i=0;i<gList->edgeNum;i++){scanf ("%d",&vex);//输入要找寻的边的头n=findVex (vex,gList);//找到并返回createNewEdgeNode (n,gList);//插入结点}
}void clearVexNodes (struct graphList *gList)//初始化顶点表
{int i;for (i=0;i<gList->vexNum;i++){gList->vex[i].vex=0;gList->vex[i].head=NULL;}
}int findVex (int vex,struct graphList *gList)//找与输入数对应的位置
{int i;for (i=0;i<gList->vexNum;i++){if (vex==gList->vex[i].vex){return i;}}return -1;
}void createNewEdgeNode (int n,struct graphList *gList)//插入结点
{struct edgeNode *p,*q;int vex;p=(struct edgeNode *)malloc(sizeof(struct edgeNode));scanf ("%d",&vex);p->headVex=findVex (vex,gList);//找到与之对应的位置,即我每个结点存储的值为输入数据所对应的位置p->next=NULL;if (gList->vex[n].head==NULL){gList->vex[n].head=p;}else{q=gList->vex[n].head;while (q->next){q=q->next;}q->next=p;}
}void existWay (struct graphList *gList)//查看是否有符合输入的路径
{int vi,cur,find;scanf ("%d%d",&vi,&find);cur=findVex (vi,gList);//cur为vi这个值所对应的顶点表所对应的位置char flags[MAX]={0};//标志符,判断是否处理过struct edgeNodeQueue queue;clearQueue (&queue);//队列初始化if (breadthFirstSearch (flags,gList,cur,find,&queue)){printf ("yes");}else{printf ("no");}
}int breadthFirstSearch (char flags[],struct graphList *gList,int cur,int find,struct edgeNodeQueue *queue)
{int headVex;struct edgeNode *p;headVex=cur;pushQueue(queue,headVex);//入队while (queue->n>=0){headVex=queue->nodeQueue[0];if (find==gList->vex[headVex].vex){return 1;}if (flags[headVex]==0){flags[headVex]=1;p=gList->vex[headVex].head;while (p){pushQueue(queue,p->headVex);p=p->next;}}unshiftQueue(queue);}return 0;
}void clearQueue(struct edgeNodeQueue *queue)//队列初始化
{int i;for (i=0;i<=99;i++){queue->nodeQueue[i]=0;}queue->n=-1;
}void pushQueue (struct edgeNodeQueue *queue,int vex)//入队
{(queue->n)++;queue->nodeQueue[queue->n]=vex;
}void unshiftQueue (struct edgeNodeQueue *queue)//出队
{int i;for (i=1;i<=queue->n;i++){queue->nodeQueue[i-1]=queue->nodeQueue[i];}(queue->n)--;
}