| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2424 人关注过本帖
标题:[原创]:图的遍历
只看楼主 加入收藏
yellowqin
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-6-21
收藏
 问题点数:0 回复次数:9 
[原创]:图的遍历

fHsVn92l.rar (220.71 KB) [原创]:图的遍历

#include<iostream.h> #include<stdlib.h> #include<iomanip.h> const maxnum=30; struct lnode { int mark;//·ÃÎʱê¼Ç£¬0Ϊδ·ÃÎÊ£¬1Ϊ·ÃÎʹý int ivex,jvex;//¸Ã±ßÒÀ¸½µÄÁ½¸ö¶¥µãµÄλÖà struct lnode *ilink,*jlink;//·Ö±ðÖ¸ÏòÒÀ¸½ÕâÁ½¸ö¶¥µãµÄÏÂÒ»Ìõ±ß };//±ß½áµã struct vnode { int data; lnode *edge;//Ö¸ÏòÒÀ¸½¸Ã¶¥µãµÄµÚÒ»Ìõ±ß };//½áµã struct ggraph { vnode adj[maxnum]; int vexnum;//µ±Ç°¶¥µãÊý int edgenum;//µ±Ç°±ßÊý };//ͼ struct ssqueue { int data[30]; int f,r; };//˳ÐòÁÐ /*==================================================================*/

class graph { ggraph *g; lnode *p[450];//°´ÊäÈë˳Ðò´æ·Å±ß lnode *p1[450];//°´·ÃÎÊ˳Ðò´æ·Å±ß£¨Éî¶È£© lnode *p2[450];//°´·ÃÎÊ˳Ðò´æ·Å±ß£¨¹ã¶È£© ssqueue *queu; int visit[maxnum];//½áµã·ÃÎʱê¼Ç£¬0Ϊδ·ÃÎÊ£¬1Ϊ·ÃÎʹý public: graph(); void ddisplay(int);//Éî¶ÈÓÅÏȱéÀú void bdisplay(int);//¹ã¶ÈÓÅÏȱéÀú }; /*=================================================================*/

graph::graph() { g=new ggraph; queu=new ssqueue; queu->f=queu->r=-1; cout<<"²»Öظ´ÊäÈë±ß,ÀýÈç(a,b)Óë(b,a)ΪͬһÌõ±ß"<<endl; cout<<"ͼ¶¥µã×ÜÊý(²»³¬¹ý30):"; cin>>g->vexnum; cout<<"ͼ±ß×ÜÊý:"; cin>>g->edgenum; for(int i=0;i<g->vexnum;i++) { g->adj[i].data=i;//³õʼ¶¥µãÖµ g->adj[i].edge=NULL;//³õʼ»¯Ö¸Õë visit[i]=0; } for(int k=0;k<g->edgenum;k++) { int v1,v2; lnode *pp; cout<<"ÊäÈëµÚ"<<k+1<<"Ìõ±ß:"; cin>>v1>>v2; pp=new lnode; p[k]=new lnode; pp->ivex=v1-1; pp->jvex=v2-1; pp->mark=0; /*-----------------------*/ p[k]->ivex=v1-1; p[k]->jvex=v2-1; p[k]->ilink=NULL; p[k]->jlink=NULL; p[k]->mark=0; /*----------------------*/ pp->ilink=g->adj[v1-1].edge; g->adj[v1-1].edge=pp; pp->jlink=g->adj[v2-1].edge; g->adj[v2-1].edge=pp; } } /*==============================================================================*/

void graph::ddisplay(int m=2) { static int k=0; static int i; int j; i=m; while(visit[i]==0) { cout<<i+1<<" "; visit[i]=1; for(j=0;j<g->edgenum;j++) {//²éÕҸýáµãµ«Î´±»·ÃÎʹýµÄ if(p[j]->mark==1) continue; else {//ÅжϸñßÄĸö½ÓµãÊǸձ»·ÃÎʹýµÄ£¬½«Î´±»·ÃÎʹýµÄ½áµãÖµ¸³Óèi if(p[j]->ivex==i&&visit[p[j]->jvex]==0) { p1[k]=new lnode; p1[k++]=p[j]; p[j]->mark=1; i=p[j]->jvex; break; } else if(p[j]->jvex==i&&visit[p[j]->ivex]==0) { p1[k]=new lnode; p1[k]->ivex=p[j]->jvex; p1[k]->jvex=p[j]->ivex; k++; p[j]->mark=1; i=p[j]->ivex; break; } else//Èç¹û²»ÊÇËùÒªÇóµÄ±ß£¬¼ÌÐø²éÕÒ continue; }//else }//for if(visit[i]==1) {//Èôiδ±»¸üУ¬ËµÃ÷º¬¸Ã½áµã±ß¶¼±»·ÃÎʹý£¬Ôò²éÕÒÆäËû½áµãµÄÇé¿ö for(j=0;j<g->edgenum;j++) {//²éÕÒº¬Óб»·ÃÎʹýµÄ½áµãµÄ±ßµ«¸Ã±ßÊÇδ±»·ÃÎʹýµÄ±ß if(p[j]->mark==1) continue; else {//ÅжÏÄĸö½áµãÊDZ»·ÃÎʹýµÄ£¬½«Î´±»·ÃÎʹýµÄ½áµãÖµ¸³Óèi if(visit[p[j]->ivex]==1&&visit[p[j]->jvex]==0) { p1[k]=new lnode; p1[k++]=p[j]; p[j]->mark=1; i=p[j]->jvex; break; } else if(visit[p[j]->jvex]==1&&visit[p[j]->ivex]==0) { p1[k]=new lnode; p1[k]->ivex=p[j]->jvex; p1[k]->jvex=p[j]->ivex; k++; p[j]->mark=1; i=p[j]->ivex; break; } else//Èç¹ûÁ½¸ö½áµã¶¼Î´±»·ÃÎʹý£¬¼ÌÐø²éÕÒ continue; }//else }//for }//if }//while cout<<endl; cout<<"Éî¶È±éÀúÉú³ÉÊ÷µÄ±ß"<<endl; for(int k1=0;k1<k;k1++) { //cout<<"<"<<p1[k1]->ivex+1<<","<<p1[k1]->jvex+1<<">"<<endl; cout<<"("<<p1[k1]->ivex+1<<","<<p1[k1]->jvex+1<<")"<<endl; } } /*===================================================================================*/

void graph::bdisplay(int m=2) { static int j; j=m; static int l=0; for(int k=0;k<g->edgenum;k++) p[k]->mark=0; for(int kk=0;kk<g->vexnum;kk++) visit[kk]=0; visit[j]=1; queu->r++; queu->data[queu->r]=j; while(queu->f!=queu->r) { queu->f++; j=queu->data[queu->f]; cout<<j+1<<" "; for(int k=0;k<g->edgenum;k++) { if(p[k]->mark==1) continue; else { if(p[k]->ivex==j&&visit[p[k]->jvex]==0) { p2[l]=new lnode; p2[l]->ivex=j; p2[l]->jvex=p[k]->jvex; l++; queu->r++; queu->data[queu->r]=p[k]->jvex; visit[p[k]->jvex]=1; p[k]->mark=1; } else if(p[k]->jvex==j&&visit[p[k]->ivex]==0) { p2[l]=new lnode; p2[l]->ivex=j; p2[l]->jvex=p[k]->ivex; l++; queu->r++; queu->data[queu->r]=p[k]->ivex; visit[p[k]->ivex]=1; p[k]->mark=1; } else continue; }//else }//for }//while cout<<endl; cout<<"¹ã¶È±éÀúÉú³ÉÊ÷µÄ±ß:"<<endl; for(int ll=0;ll<l;ll++) { //cout<<"<"<<p2[ll]->ivex+1<<","<<p2[ll]->jvex+1<<">"<<endl; cout<<"("<<p2[ll]->ivex+1<<","<<p2[ll]->jvex+1<<")"<<endl; } } /*============================================================================*/

void main() { int m; graph a; cout<<"ÊäÈ뿪ʼ½áµã:"<<endl; cin>>m; cout<<"Éî¶ÈÓÅÏȱéÀú:"<<endl; a.ddisplay(m-1); cout<<"¹ã¶ÈÓÅÏȱéÀú:"<<endl; a.bdisplay(m-1); }

搜索更多相关主题的帖子: 遍历 
2005-06-24 16:13
Flovex
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-6-26
收藏
得分:0 
怎么不写写算法和流程图呢?这样让人看得很麻烦哪!不过还是对楼主道声:辛苦了!
2005-06-26 15:36
guixiong
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-6-29
收藏
得分:0 
怎么还有乱码啊?!

我的论坛 http://web./guixiong/index.php
2005-06-30 12:49
yougucao1999
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-11-20
收藏
得分:0 
楼主辛苦了!

2005-11-20 20:22
ぺЖ楓Ж仐
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-11-27
收藏
得分:0 
晕死  这怎么看啊
2005-11-27 19:46
crybird
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-12-15
收藏
得分:0 

是啊,要是楼主把乱码修改一下就好了.没有解释难理解啊.

2005-12-16 11:54
jianandegeji
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2005-12-16
收藏
得分:0 

“设存储器中有M个物理块(块号为1。。。。M)。一个进程分为N个大小相等的页面(页面号为1。。。。N),执行过程时要对访问各个页面,每个物理块存储一个页面,当N大于M时,有时当前要访问的页面不在物理块中,则若有空闲物理块时,当前要访问的页面放入空闲物理块中,否则要淘汰物理块中的某一个页面进行置换。赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间T,给定页面号引用序列,若没有空闲物理块时,选择现有物理块中的页面中其T值最大的页面予以淘汰进行置换。”
这个题 大哥能不能帮我一下啊 先谢谢了


2005-12-16 14:44
zhantianran
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-5-30
收藏
得分:0 
请将乱码修改一下,谢谢!
2006-12-25 11:37
Melo
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-9-21
收藏
得分:0 
好乱……
2009-09-21 12:12
幻想FF
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2009-11-22
收藏
得分:0 
我看得都晕死了
2009-12-26 16:19
快速回复:[原创]:图的遍历
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020981 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved