- 390.50 KB
- 2022-04-22 11:27:25 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
'习题配套第一章2.C、A、B、B、A、A、D3.D={A,B,C,E,F,G,H,I,J};R={,,,,,,,,,}ABCEFGHI题1-3图J4.顺序、链式、索引、哈希。*5.解:100n2>2nn至少要多大6.O(n)、O(n)、O(n)、O()、(5)当n>m,O(n),当m>n,O(m)7.n!2100>lgn>n1/2>n3/2>(3/2)n>2n>nlgn>nn第二章1.×、√、×、√、√2.AAD4.顺序表voidDelete_SeqListx(SeqList*L,ElemTypex)/*删除表中值为x元素*/{inti,j;for(i=1;i<=L->length;i++){if(L->elem[i]==x){for(j=i;j<=L->length-1;j++)L->elem[j]=L->elem[j+1];L->length--;}/*向上移动*/}O(n2)
链表voiddel_link(LinkListH,intx)/*删除数据域为x的结点*/{LNode*p,*q;p=H;q=H->next;while(q!=NULL){if(q->data==x){p->next=q->next;free(q);q=p->next;}else{p=q;q=q->next;}}}O(n)5.intDelete_SeqListx(SeqList*L,inti,intk)/*删除表中删除自第i个结点开始的k个结点*/{intj;if(i<1||k<0||i+k-1>L->length)/*检查空表及删除位置的合法性*/{printf("不存在第i个元素");returnERROR;}for(j=i;j<=L->length-k;j++)L->elem[j]=L->elem[j+k];/*向上移动*/L->length-=k;ReturnOK;/*删除成功*/}O(n)6.voidDelete_SeqListx(SeqList*L,ElemTypex)/*将表中值为x元素换成y*/{inti,j;for(i=1;i<=L->length;i++){if(L->elem[]==x){L->elem[i]=y;}/**/}O(n)7.写一算法在循环单链表上实现线性表的CList_length(L)运算。intlink_length(LinkListH){LNode*p;inti=0;p=H;
while(p->next!=H){i++;p=p->next;}returni;}O(n)8.在用头指针表示的单循环链表中,查找开始结点a1的时间是O(1),然而要查找终端结点则需从头指针开始遍历整个链表,其时间是O(n)。但在很多实际问题中,表的操作常常是在表的首、尾位置上进行,如果改用尾指针rear来表示单循环链表,则查找开始结点a1和终端结点an都很方便,它们的存储位置分别是rear->next->next和rear,显然,查找时间都是O(1)。9.intInsert_LinkListab(LinkListH,ElemTypea,ElemTypeb)/*在单链表中值为a的结点前插入一个值为b的结点*/{LNode*q=H,*s;*p=H->next;while(p!=NULL&&p->data!=a)/*q->next&&q->next->data!=a*/{q=p;p=p->next;}/*查找a结点*/s=(LinkList)malloc(sizeof(LNode));/*申请、填装结点*/s->data=b;s->next=q->next;/*新结点插入在第i-1个结点的后面*/q->next=s;returnOK;}/*Insert_LinkListab*/10.顺序表voidReverse_Sq(SqList*L)/*顺序表的就地逆置*/{for(i=1,j=L.len;inext;q=p->next;s=q->next;p->next=NULL;while(s->next){q->next=p;p=q;q=s;s=s->next;/*把H的元素逐个插入新表表头*/}
q->next=p;s->next=q;H->next=s;}/*Reverse_L*/分析:本算法的思想是,逐个地把L的当前元素q插入新的链表头部,p为新表表头。11.voidmerge1(LinkList&A,LinkList&B,LinkList&C)/*把链表A和B合并为C,A和B的元素间隔排列,且使用原存储空间*/{p=A->next;q=B->next;C=A;while(p&&q){s=p->next;p->next=q;/*将B的元素插入*/if(s){t=q->next;q->next=s;/*如A非空,将A的元素插入*/}p=s;q=t;}/*while*/}/*merge1*/12.StatusDelete_Pre(CiLNodes)/*删除单循环链表中结点p的直接前驱*/{q=p;while(q->next->next!=p)q=q->next;/*找到p的前驱的前驱*/s=q->next;q->next=p;free(s);returnOK;}/*Delete_Pre*/13.StatusInsert_SqList(SeqList&L,intx){if(L->length+1>m-1)returnERROR;L->length++;i=L->length;while(L->elem[i]>x&&i>0;){L->elem[i+1]=L->elem[i];i--;}L->elem[i+1]=x;returnOK;}/*Insert_SqList14.intInsert_Linkx(LinkListH,ElemTypex)/*在值递增单链表中插入一个值为x的结点,仍递增*/{LNode*q=H,*s;*p=H->next;while(p!=NULL&&p->datanext&&q->next->datanext;}/*查找a结点*/s=(LinkList)malloc(sizeof(LNode));/*申请、填装结点*/s->data=x;s->next=q->next;/*新结点插入*/q->next=s;returnOK;}/*Insert_Linkx*/15.源程序代码:(在TubroC2.0测试通过)#include#includestructnode{intnumber;/*人的序号*/intcipher;/*密码*/structnode*next;/*指向下一个节点的指针*/};structnode*CreatList(intnum)/*建立循环链表*/{inti;structnode*ptr1,*head;if((ptr1=(structnode*)malloc(sizeof(structnode)))==NULL){perror("malloc");returnptr1;}head=ptr1;ptr1->next=head;for(i=1;inext=(structnode*)malloc(sizeof(structnode)))==NULL){perror("malloc");ptr1->next=head;returnhead;}ptr1=ptr1->next;ptr1->next=head;}returnhead;}main(){inti,n=30,m;/*人数n为30个*/structnode*head,*ptr;randomize();head=CreatList(n);for(i=1;i<=30;i++){
head->number=i;head->cipher=rand();head=head->next;}m=rand();/*m取随机数*/i=0;/*因为我没办法删除head指向的节点,只会删除head的下一节点,所以只能从0数起。*/while(head->next!=head)/*当剩下最后一个人时,退出循环*/{if(i==m){ptr=head->next;/*ptr记录数到m的那个人的位置*/printf("number:%dn",ptr->number);printf("cipher:%dn",ptr->cipher);m=ptr->cipher;/*让m等于数到m的人的密码*/head->next=ptr->next;/*让ptr从链表中脱节,将前后两个节点连接起来*/head=hea/d->next;/*head移向后一个节点*/free(ptr);/*释放ptr指向的内存*/i=0;/*将i重新置为0,从0再开始数*/}else{head=head->next;i++;}}printf("number:%dn",head->number);printf("cipher:%dn",head->cipher);free(head);/*让最后一个人也出列*/}16.voidSqList_Intersect(SqListA,SqListB,SqList&C)/*求元素递增排列的线性表A和B的元素的交集并存入C中*/{i=1;j=1;k=0;while(A.elem[i]&&B.elem[j]){if(A.elem[i]B.elem[j])j++;if(A.elem[i]==B.elem[j]){C.elem[++k]=A.elem[i];//当发现了一个在A,B中都存在的元素,//就添加到C中i++;j++;}}/*while*/}/*SqList_Intersect*/17.StatusDuLNode_Pre(DuLinkList*H)/*完成双向循环链表结点的pre域*/{
p=H;while(q->next!=H){p->next->pre=p;p=p->next;}returnOK;}/*DuLNode_Pre*/第三章栈与队列1.假定有编号A、B、C的3辆列车顺序开进一个栈式结构的站台,请写出每一种开出站台的列车编号顺序(注:每一列车开出栈开出站台后,不允许再进栈)。2.指出下述程序段的功能是什么?voidDemo1(SeqStack*S){inti;arra[16];n=16;initStack(&S);for(i=0,inext=NULL;s=(LinkStack*)malloc(sizeof(LinkStack));s->top=p;}⑵判栈空intEmpty_LS(LinkStack*s){returns->top->next==NULL;}⑶入栈LinkStack*Push_LS(LinkStack*s,ElemTypex){StackNode*p=(StackNode*)malloc(sizeof(StackNode));p->data=x;p->next=s->top->next;/*将元素x插入链栈顶*/s->top->next=p;returns;}⑷出栈intPop_LS(LinkStack*s,ElemType*y){StackNode*p;if(Empty_LS(s)){printf("StackUnderflow.");/*下溢*/returnOVERFLOW;}else{*y=s->top->next->data;=s->top->next;s->top->next=p->next;free(p);returnOK;}}取栈顶元素intGetTop(LinkStack*s,ElemType*y)
{if(Empty_LS(s)){printf("Stackunderflow.");/*下溢*/returnOVERFLOW;}else{*y=s->top->next->data;returnOK;}}4.StatusAllBrackets_Test(charstr)/*判别表达式中三种括号是否匹配*/{InitStack(s);for(p=str;*p;p++){if(*p=="("||*p=="["||*p=="{"}push(s,*p);elseif(*p==")"||*p=="]"||*p=="}"){if(StackEmpty(s))returnERROR;pop(s,c);if(*p==")"&&c!="(")returnERROR;if(*p==")"&&c!="["]returnERROR;if(*p==")"&&c!="{"}returnERROR;/*必须与当前栈顶括号匹配*/}}/*for*/if(!StackEmpty(s))returnERROR;returnOK;]/*AllBrackets_Test*/或intPairBracket(char*S){/*检查表达式中括号是否配对*/inti;SeqStackT;/*定义一个栈*/InitStack(&T);for(i=0;i0){push(S,n);n=n-1;}while(!EmptyStack(S)){Pop(S,i);f=f*i;}return(f);}8.voidhuiwen(){Init_LS(s);printf("Pleaseinputastring:n");for(i=0;(i<20)&&((a[i]=getchar())!="n");++i);/*输入字符串*/for(j=0;jrear-sq->frontsq->rear>=sq->frontcount=m-(sq->front-sq->rear)sq->rearfront11.循环队列的优点是什么?如何判别它的空和满?优点:防止假溢出;判别循环队列的空:return(sq->rear>==sq->front);判别循环队列的满:return((sq->rear+1)%MAXSIZE==sq->front)12.假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素位置(注意不设头指针),试编写相应的置空队、判队空、入队和出队等算法。typedefstructqnode{ElemTypedata;structqnode*next;}QCNode;/*链式循环链队列结点的类型*/typedefstruct{QCNode*rear;}LCQueue;/*只设一个指向队尾元素的指针*/(1)置空队算法:
voidInit_LCQueue(LCQueue*Lcq){p=(QCnode*)malloc(sizeof(QCNode));/*申请头结点*/p->next=p;Lcq->rear=p;}(2)判队空算法:intEmpty_LCQueue(LCQueue*Lcq){returnLcq->rear->next==Lcq->rear;/*或Lq->rear==NULL;*/}(3)入队算法:voidIn_LCQueue(LCQueue*Lcq,ElemTypex)/*进队操作*/{LCQueue*p;p=(QCNode*)malloc(sizeof(QCNode));/*申请新结点*/p->data=x;p->next=Lcq->rear->next;Lcq->rear->next=p;Lcq->rear=p;}/*In_LCQueue*/(4)出队算法:intOut_LCQueue(LCQueue*Lq,ElemType*y){LCQueuep;if(Empty_LCQueue(Lq)){printf("队空");returnOVERFLOW;}/*队空,出队失败*/else{p=Lcq->rear->next->next;/*队头第一个数据元素结点*/Lcq->rear->next->next=p->next;*y=p->data;/*队头元素放y中*/free(p);returnOK;}}13.假设用一个数组Q[M]来表示队列,该队列只设一个队头指针front,不设队尾指针,用计数器count来记录队列中元素的个数。试编写出相应的置空队列、入队列和出队列的算法。typedefstructqueuenode{ElemTypeelem[MAXSIZE];/*队列中数据元素的存储空间*/intfront,count;/*队头指针、队中元素数量*/}CirQueue;/*以上是结点类型的定义*/voidInit_Queue(CirQueue*Q)/*置空队*/{Q->front=Q->count=0;}intEmpty_Queue(CirQueue*Q)/*判队空*/{return(Q->count==0);}intIn_Queue(CirQueue*Q,ElemTypex)/*入队*/{if(Q->count==MAXSIZE){printf("队已满,不可以入队");returnOVERFLOW};}Q->elem[(sq->front+sq->count)%MAXSIZE]=x;sq->count++;
returnOK;}intOut_Queue(CirQueue*Q,ElemType*y)/*出队*/{if(Empty_Queue(Q)){printf("队已空,无元素可以出队");returnOVERFLOW);}*y=sq->elem[sq->front];/*读出队头元素*/sq->front=(sq->front+1)%MAXSIZE;sq->count--;returnOK;}}intFront_Queue(CirQueue*Q,ElemType*y)/*取队头元素*/{if(Empty_Queue(Q)){printf("队空,无元素可取");returnOVERFLOW);}*y=sq->elem[sq->front];/*读出队头元素*/returnOK;}}14.设长度为n的链队列用单循环链表表示,若只设头指针,则入队出队操作的时间复杂度是多少?若只设尾指针呢?若只设头指针,则入队操作的时间复杂度是O(1),出队操作的时间复杂度是O(n);若只设尾指针,则入队操作的时间复杂度都是O(1)。*15.写一个算法,借助于栈将一个单链表置逆。第4章数组1.请按行和按列优先顺序列出二维数组A3×4的所有元素在内存中的存储次序,开始结点为a00。a00a10a20a01a11a21a02a12a22a03a13a232.写出三维数组地址计算公式。设三维数组Am×n*p,先行,列,最后Z方向LOC(A[i][j][k])=LOC(A[0][0][0])+(i×m×n+j×m+k)×L3.设有三对角矩阵An×n,将其三条对角线上的元素逐行地存储到向量B[0‥3n-3]中,使得B[k]=a[i][j],求:用i,j表示k的下标变换公式。A[i][j]之间的对应关系为:k=2×i+j4.二维数组M的元素是4个字符(每个字符占一个存储单元)组成的串,行下标i的范围从0到4,列下标j的范围从0到5,M按行存储时元素M[3][5]的起始地址与M按列存储时元素()的起始地址相同。A.m[2][4]B.M[3][4]C.M[3][5]D.M[4][3]M[3][5]与M存储时元素M[3][5]起始地址相同。5.数组A中,每个元素A的存储占3个单元,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放在存储器内,存放该数组至少需要的单元个数是(1),若该数组按行存放时,元素A[8][5]的起始地址是(2),若该数组按列存放时,元素A[8][5]的起始地址是(3)。
(1)A.80B.100C.240D.270(2)A.SA+141B.SA+144C.SA+222D.SA+225(3)A.SA+141B.SA+180C.SA+222D.SA+225(1)C.(2)C.(3)A6.对于二维数组A[m][n],其中m<=80,n<=80,先读入m,n,然后读入该数组的全部元素,对如下三种情况分别编写相应函数:(1)求数组A边界元素之和。intsum(L){introw,col,sum=0;for(row=0;rowrhead[i];
while((q)&&(q->colright;if(!q){printf(“notsearched!”;returnNULL;)p=M->chead[j];while((q)&&(q->rowdown;if(!p){printf(“notsearched!”;returnNULL;)returnp;}(2)已知数据元素的值x,查找x在A中的行、列号;QLNode*searchx(CrossListM,ElemTypex){inti;/*mu,nu*/for(i=1;irhead[i];if((q)&&(q->v<>x))q=q->right;elsereturnq;}}9.简述广义表和线性表的区别和联系。答:相同点:线性;不同点:数据元素分为原子和广义表。10.设广义表L=((),()),试问head(L),tail(L),L的长度、深度各为多少?head(L)=()tail(L)=())L的长度为2。11.求下列广义表运算的结果(1)head((a,b,c))=(a,b,c);(2)tail((b,d,p,h))=();(3)head(((a,b),(c,d)))=((a,b),(c,d));(4)tail(((a,b),(c,d)))=();(5)head(tail(((a,b),(c,d))))=();(6)tail(head(((a,b),(c,d))))=()第6章树树的形状acbfgdeljkimmh1.根据题意画出树的形状为右图:a是根结点,mndfjkl是叶结点;c是g的双亲;c,a是g的祖先;j,k是g的孩子;imn是e的子孙;d是e的兄弟;g,h是f的兄弟;b的层次是2;n的层次是5;树的深度是5;以c为根的子树深度是3;树的度数是3。2.三个结点的二叉树如下所示:有五种形态:
(1)(2)(3)(4)(5)3.分别写出图6-28(a)所示的二叉树的前序、中序和后序遍历序列。前序ABCDEF中序ACEDB后序EDCBA4.画出图6-28(b)所示二叉树顺序存储和二叉链表的存储结构。BACDEABCDGEFHI(b)(a)图6-285.请画出如图6-29所示两棵二叉树的顺序存储结构,并比较每棵二叉树所用的存储空间的大小。CBADLKMN图6-29(a)(b)
(b)所用的存储空间的大6.一棵完全二叉树的第3层上有4个叶子结点,问该二叉树最多有多少个结点?7个结点7.已知一棵二叉树只存在度数为0或度数为2的结点,度数为2的结点有19个,问度数为0的结点有多少个?20个,分析:根据公式n0=n2+1,有n0=19+1=208.写出用非递归实现二叉树的中序遍历算法,并分析其时间复杂度和栈所需要的最大容量。二叉树的中序遍历的非递归算法。voidInorder2(BTNode*bt)/*利用栈实现前序遍历非递归算法*/{p=bt;top=-1;while(p||top>-1){if(p)/*二叉树非空*/{++top;s[top]=p;/*根结点指针进栈*/p=p->lchild;}/*p移向左孩子*/else/*栈非空*/{p=s[top];--top;/*双亲结点指针出栈*/printf(p->data);/*访问根结点,输出结点*/p=p->rchild;}/*p移向右孩子*/}}/*Inorder2*/9.若已知某二叉树的前序遍历序列为ABCDEFGHI和中序遍历序列为BCAEDGHFI,试画出该二叉树。并写出后序遍历的结果。ABDCHEFGI10.设二叉树以二叉链表形式存储,写一算法交换各结点的左右子树。voidExchange1(BTNode*bt){/*交换左右子树的第一种方法*/if(*bt){/*这里以指针为参数使交换在实参结点上进行*/BTNodep;Exchange1(&(*bt)->lchild);Exchange1(&(*bt)->rchild);p=(*bt)->lchild;(*bt)->lchild=(*bt)->rchild;(*bt)->rchild=p;
}}voidExchange2(BTNode*bt){/*交换左右子树的第二种方法*/if(bt){BTNode*p;p=bt->lchild;bt->lchild=bt->rchild;bt->rchild=p;Exchange2(bt->lchild);Exchange2(bt->rchild);}}/*Exchange2*/11.设二叉树以二叉链表形式存储,写出一个求叶子结点总个数的算法。voidLeaf_BiTree(BTNode*T)/*求树的深度及叶子结点个数*/{if(T){if(T->lchild==NULL&&T->rchild==NULL){printf("%cn",T->data);count++;}Leaf_BiTree(T->lchild,j);Leaf_BiTree(T->rchild,j);}}/*Leaf_BiTree*/12.画出6-28(b)所示二叉树对应的森林。ABCDGEFHI13.画出图6-28(b)所示二叉树所对应的中序线索二叉树。ABCDGEFHI中序遍历序列为DGBAECHFI
14.写出在中序线索二叉树上查找值为x的结点的算法。15.对给定的一组权值:15,2,9,13,8,20,22,构造一棵哈夫曼树,并计算出带权路径长度。16.写出实现图6-27(c)所示将百分制转换为五级分判定过程的算法。第8章习题V0V1V2V3V5V4图7-22有向图1.对图7-22所示的有向图中,试求出:(1)每个顶点的入度和出度;ID0=1,OD0=1ID1=2,OD1=1ID2=1,OD2=2ID3=0,OD3=2ID4=3,OD4=0ID5=1,OD5=2(2)邻接矩阵;000010100000010001001010000000010010A=(3)写出该图的邻接表。V0V1V2V30∧54∧14∧2∧1∧1∧V4V5
2.求如图7-22所示图的每个结点的入度和出度和总度数,并编写算法。每个结点的总度数:OD0=2OD1=3OD2=3OD3=2OD4=3OD5=3假设用邻接矩阵存储结构,入度和出度和总度数的算法如下:voidMages(Mgraph*ma){Mgraphma;intind[VERTEX_MAX]={0},outd[VERTEX_MAX]={0},totled[VERTEX_MAX]={0};for(i=0;in;i++)/*求出度*/{for(j=0;in;j++){If(ma->arcs[i][j]==1)outd[i]++;}}for(i=0;in;i++)/*求出度*/{for(j=0;in;j++){If(ma->arcs[j][i]==1)ind[i]++;}}for(i=0;in;i++){totled[i]=ind[i]+outd[i];}printf("vertexidodtoteldn");/*求总度数*/for(i=0;in;i++){printf("%s%d%d%dn",G->adjlist[i].vertex,ind[i],outd[i],totled[i]);}}}3.对于n个顶点构成的无向图(或有向图),采用邻接矩阵和邻接表两种方式进行存储,写出下面要求的算法:(1)求图中的边数;有向图邻接矩阵intMages(Mgraph*ma)
{intages=0;for(i=0;in;i++)/*求出度*/{for(j=0;in;j++){If(ma->arcs[i][j]==1)ages++;}}returnMages;}如果是无向图,最后Mages要除以2。有向图邻接表存储结构求边数:voidf_ind(ALGraph*G){inti;intALages;/*三个变量分别为入度、出度和总度数*/EdgeNode*p;for(i=0;in;i++)/*求出度*/{p=G->adjlist[i].firstedge;while(p!=NULL){ALages++;p=p->next;}}returnALages;}如果是无向图,最后ALages要除以2。(2)任意两个顶点的邻接关系;邻接矩阵存储结构voidMcnn(Mgraph*ma){for(i=0;in;i++)/*求出度*/{for(j=0;in;j++){If(ma->arcs[i][j]==1)printf(“v%d,v&d)n”,i,j);}
}returnMages;}邻接表存储结构voidconn(ALGraph*G){EdgeNode*p;for(i=0;in;i++)/*求出度*/{p=G->adjlist[i].firstedge;while(p!=NULL){printf(“v%d,v&d)n”,i,p->adjvex);p=p->next;}}}(3)每个顶点的度,有向图的入度和出度。邻接表存储voidf_ind(MGraph*G){inti;intALages;/*三个变量分别为入度、出度和总度数*/EdgeNode*p;for(i=0;in;i++)/*求出度*/{p=G->adjlist[i].firstedge;while(p!=NULL){ALages++;p=p->next;}}returnALages;}有向图邻接表voidf_ind(ALGraph*G){inti;intind[VERTEX_MAX]={0},outd[VERTEX_MAX]={0},totled[VERTEX_MAX]={0};/*三个变量分别为入度、出度和总度数*/EdgeNode*p;
for(i=0;in;i++)/*求出度*/{p=G->adjlist[i].firstedge;while(p!=NULL){outd[i]++;p=p->next;}}for(i=0;in;i++)/*求入度,依次扫描每个链表*/{p=G->adjlist[i].firstedge;while(p!=NULL){ind[p->adjvex]++;p=p->next;}}for(i=0;in;i++){totled[i]=ind[i]+outd[i];}printf("vertexidodtoteldn");/*求总度数*/for(i=0;in;i++){printf("%s%d%d%dn",G->adjlist[i].vertex,ind[i],outd[i],totled[i]);}}4.对于如图7-23所示的无向图,完成如下题目:(1)画出邻接表。ABCD3∧4∧24∧2EF3∧1205∧31005∧310
(2)写出邻接矩阵;010010101010010101001010110101001010A=(3)深度优先遍历:ABCDEF广度优先遍历ABECDF5.强连通分量。V0V1V2V3V5V46.n-1,2(n-1)7.对带权路径无向图7-24,求解下面的问题:(1)求该图的邻接矩阵。∧62441321ABCDEF5∧73∧320553301052∧∧65345606∧472(2)最小生成树——两种情况
ABCDFE2663545662EAFB43CD8.对于图7-25所示的连通图,分别用Prim和Kruskal算法构造其最小生成树。FE45B4226DA371C5HGB2Prim算法构造其最小生成树过程(从A点开始)ACDAC33ACD311ACD13B2E44FACD13B2E4ACD13B2E44FH2G5Kruskal算法构造其最小生成树过程FGEFEG2B1DCABADHHC1
HF2EG2B31DCA2B1DCAF2HEGFG2HF44E2B31CAG4E2B31DCA2DHAC13B2E44FH2GD59.根据dijkstra算法求出图7-24中顶点A到各个顶点之间的最短路径。终点从A到各终点的Dist值和最短路径的求解过程i=1i=2i=3i=4i=5B2(A,B)C∞5(A,B,C)D∞∞10(A,B,C,D)E6(A,E)6(A,E)6(A,E)F∞∞12(A,B,C,F)12(A,B,C,F)12(A,B,C,F)BCEDFS{A,B}{A,B,C}{A,C,D,E}(A,B,C,D)(A,B,C,F)'
您可能关注的文档
- 《数字逻辑》(白中英)(第六版)习题解答.doc
- 《数字逻辑与电路》复习题(带参考答案).pdf
- 《数学思维方式与创新》3习题答案.doc
- 《数据库原理》课后习题及解答.doc
- 《数据库原理》课后习题答案--ch1.pdf
- 《数据库基础与应用-Access 2010 》习题答案(汇总).pdf
- 《数据库应用》Access习题答案.doc
- 《数据库应用技术:SQLserver2005基础篇》(张蒲生)第7-8-9章部分习题参考答案.pdf
- 《数据库管理 应用与开发》 课后习题答案~首发!.pdf
- 《数据结构(C语言版)》习题指导与解答.docx
- 《数据结构》基本习题答案.doc
- 《数据结构》复习题题库.doc
- 《数据结构》课后习题答案.doc
- 《数据通信》综合练习题及答案.doc
- 《数据通信》综合练习题答案.doc
- 《数据通信原理》综合练习题与答案.doc
- 《数控系统设计》复习题及答案.doc
- 《数理金融》习题参考答案.doc
相关文档
- 施工规范CECS140-2002给水排水工程埋地管芯缠丝预应力混凝土管和预应力钢筒混凝土管管道结构设计规程
- 施工规范CECS141-2002给水排水工程埋地钢管管道结构设计规程
- 施工规范CECS142-2002给水排水工程埋地铸铁管管道结构设计规程
- 施工规范CECS143-2002给水排水工程埋地预制混凝土圆形管管道结构设计规程
- 施工规范CECS145-2002给水排水工程埋地矩形管管道结构设计规程
- 施工规范CECS190-2005给水排水工程埋地玻璃纤维增强塑料夹砂管管道结构设计规程
- cecs 140:2002 给水排水工程埋地管芯缠丝预应力混凝土管和预应力钢筒混凝土管管道结构设计规程(含条文说明)
- cecs 141:2002 给水排水工程埋地钢管管道结构设计规程 条文说明
- cecs 140:2002 给水排水工程埋地管芯缠丝预应力混凝土管和预应力钢筒混凝土管管道结构设计规程 条文说明
- cecs 142:2002 给水排水工程埋地铸铁管管道结构设计规程 条文说明