同学们提问关于“数据结构试题及答案_问一道数据结构 求无向图和邻接表的习题麻烦老师讲解...[数学]”的问题,52IJ师说平台通过网络上精心整理了以下关于“数据结构试题及答案_问一道数据结构 求无向图和邻接表的习题麻烦老师讲解...[数学]”的一些有用参考答案。请注意:文中所谈及的内容不代表本站的真正观点,也请不要相信各种联系方式。下面是本网所整理的“数据结构试题及答案_问一道数据结构 求无向图和邻接表的习题麻烦老师讲解...[数学]”的相关信息:
问一道数据结构 求无向图和邻接表的习题麻烦老师讲解...
科目:数学 关键词:数据结构试题及答案其他类似问题
问题1:数据结构:无向图适合邻接矩阵,有向图适合邻接表这句话对吗,并给出理由[数学科目]这句话不对,邻接表和邻接矩阵,即可以存储无向图也可以存储有向图,稠密图适合用邻接矩阵,稀疏图适合用邻接表存储
问题2:数据结构题.假定无向图G有6个结点和9条边,.(1) 画出G的邻接距阵和邻接表(2) 根据邻接表从顶点3假定无向图G有6个结点和9条边,并依次输入这9条边为(0,1)(0,2)(0,4)(0,5)(1,2)(2,3)(2#include #include #include #include #define maxsize 64 #define TRUE 1 #define FALSE 0 #define n 6 #define e 9 typedef char datatype ; typedef char vextype; typedef struct { vextype vexs[maxsize]; adjtype arcs[maxsize][maxsize]; typedef struct { datatype data[maxsize]; int front,rear; typedef struct node { int adjvex; struct node *next; }edgenode; typedef struct { vextype vertex; edgenode *link; vexnode gl[maxsize]; graph *ga; graph *CREATGRAPH() { int i,j,k; char ch; system("cls"); scanf("%c",&ch); printf("\n请输入顶点信息(邻接矩阵): "); for(i=1;i<=n;i++) scanf("%c",&ga->vexs[i]); for(i=1;i<=n;i++) for(j=1;j<=n;j++) ga->arcs[i][j]=0; printf("\n输入节点信息与权值:\n"); for(k=0;k { scanf("%d%d",&i,&j);//读入一条变得两端顶点序号i,j及边上的权值 ga->arcs[i][j]=1; ga->arcs[j][i]=1; } return ga; void PRINT() { int i,j; system("cls"); printf("\n对应的邻接矩阵是:\n\n"); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf("%5d",ga->arcs[i][j]); printf("\n"); } void CREATADJLIST() { int i,j,k; edgenode *s; char ch; system("cls"); printf("请输入顶点信息: "); scanf("%c",&ch); for(i=1;i<=n;i++) { gl[i].vertex=getchar(); gl[i].link=NULL; } printf("输入边表节点信息:\n"); for(k=1;k<=e;k++) { scanf("%d %d",&i,&j); s=(edgenode *)malloc(sizeof(edgenode)); s->adjvex=j; s->next=gl[i].link; gl[i].link=s; s=(edgenode *)malloc(sizeof(edgenode)); s->adjvex=i; s->next=gl[j].link; gl[j].link=s; } void PRINTL() { int i; edgenode *s; system("cls"); printf("\n对应的邻接表是:\n"); for(i=1;i<=n;i++) { s=gl[i].link; while(s!=NULL) { printf("%5d",s->adjvex); s=s->next; } printf("\n"); } sequeue *SETNULL(sequeue *P) { P->front=maxsize-1; P->rear=maxsize-1; return P; int EMPTY(sequeue *Q) { if(Q->rear==Q->front) return TRUE; else return FALSE; sequeue *ENQUEUE(sequeue *Q,int k) { if(Q->front==(Q->rear+1)%maxsize) { printf("队列已满!\n"); return NULL; } else { Q->rear=(Q->rear+1)%maxsize; Q->data[Q->rear]=k; } return Q; } int DEQUEUE(sequeue *Q) { if(EMPTY(Q)) { printf("队列为空,无法出队!\n"); return FALSE; } else { Q->front=(Q->front+1)%maxsize; return Q->data[Q->front]; } return 1; } void BFS(int k) { int i,j; int visited[maxsize]={0}; printf("\n广度优先遍历后得到的序列是: "); Q=SETNULL(Q); printf("%3c",ga->vexs[k]); visited[k]=TRUE; Q=ENQUEUE(Q,k); while(!EMPTY(Q)) { i=DEQUEUE(Q); for(j=1;j<=n;j++) if((ga->arcs[i][j]==1)&&(!visited[j])) { printf("%3c",ga->vexs[j]); visited[j]=TRUE; Q=ENQUEUE(Q,j); } } printf("\n\n深度优先遍历后得到的序列是: "); void BFSL(int k) { int i; int visited[maxsize]={0}; edgenode *p; Q=SETNULL(Q); printf("\n广度优先遍历后得到的序列是: "); printf("%3c",gl[k].vertex); visited[k]=TRUE; Q=ENQUEUE(Q,k); while(!EMPTY(Q)) { i=DEQUEUE(Q); p=gl[i].link; while(p!=NULL) { if(!visited[p->adjvex]) { printf("%3c",gl[p->adjvex].vertex); visited[p->adjvex]=TRUE; Q=ENQUEUE(Q,p->adjvex); } p=p->next; } } printf("\n\n深度优先遍历后得到的序列是: "); void DFS(int i) { int j; static int visited[maxsize]={0}; printf("%3c",ga->vexs[i]); visited[i]=TRUE; for(j=1;j<=n;j++) if((ga->arcs[i][j]==1)&&(!visited[j])) DFS (j); } void DFSL(int k) { int j; edgenode *p; static int visited[maxsize]={0}; printf("%3c",gl[k].vertex); visited[k]=TRUE; p=gl[k].link; while(p) { j=p->adjvex; if(!visited[j]) DFSL(j); p=p->next; } } void main() { int i,k; int ch; Q=malloc(sizeof(graph)); ga=malloc(sizeof(graph)); while(1) { printf("\n\n\n"); printf("输入你的选择: "); scanf("%d",&ch); switch(ch) { case 1: CREATADJLIST(); PRINTL(); printf("想从第几号结点开始: "); scanf("%d",&k); BFSL(k); DFSL(k);break; case 2: ga=CREATGRAPH(); PRINT(); printf("想从第几号结点开始: "); scanf("%d",&i); BFS(i); DFS(i);break; case 3:exit (0); } } } PS:下标从1开始的,输入矩阵的对应元素时要按你的顺序输入 输入表的顺序是要逆序输入 否则两者答案不匹配 因为表的选择要有大小要求的 你可以试一下.
题在哪呢?
你是要找题...?
问题4:数据结构与算法实验题 条形图轮廓问题★实验任务在x 轴上水平放置着n 个条形图.条形图的轮廓是消去这n 个条形图的隐藏线后得到的图形,如图所示.每个条形图由3 元组(Li,Hi,Ri)表示.其中,[数学科目]#include
#include
#include
#define LBound (-3000)
#define UBound 3000
#define Cod2Idx(x) ((x)-LBound)
#define Size Cod2Idx(UBound+1)
int main() {
int hs[Size],n;
int i,l,r,h,i0,i1;
memset(hs,0,sizeof(*hs) * Size);
scanf("%d",&n);
for (i0=UBound,i1=LBound; n>0; n--) {
scanf("%d %d %d",&l,&h,&r);
if (l < i0) i0 = l;
if (r > i1) i1 = r;
for (i=l; i
问题5:【数据结构】 填空第14题 求图求解析树的形状如下:
A
/ \
B C
\ / \
D E F
/ \
G H
所以中序遍历为:BGDAEHCF
- specialist_specialist ['spelist] 怎么
- 进入冰冻城塞_...浊河连底冻无声.此中来往本迢递
- 浮夸粤语发音歌词_跪求粤语达人帮忙音译下陈奕迅
- 3月14是什么情人节_...6月,7月,8月,9月,10月
- 北京奥运会入场式_排列下列国家参加奥运会入场式
- 粤语歌曲学习_...受伤的女人翻译成汉字我想学习王
- kim yoon_...8)Yeo,Suh Koo 9)kim,Soo Yeon 10)
- 高中英语必修一_高一英语必修一第一单元单词表[英
- again and again_again and again 的近义词(英语)
- 沮丧英文_沮丧英文如何翻译Depressed
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
