数据结构教程第六版答案(要命的数据结构课程设计题目啊!!!)

2023-12-13 18:00:13 :27

数据结构教程第六版答案(要命的数据结构课程设计题目啊!!!)

“数据结构教程第六版答案”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看数据结构教程第六版答案(要命的数据结构课程设计题目啊!!!)!

本文目录

要命的数据结构课程设计题目啊!!!

//图的遍历#include《iostream.h》#include《stdio.h》#include《stdlib.h》int const MAXQSIZE=20;int const MAX_VERTEX_NUM=20;int const ERROR=-1;int const OK=1;typedef char VexType;typedef struct ArcNode {int adjvex; //该弧所指向的顶点的位置struct ArcNode *nextarc; //指向下一个弧的指针int weight; //权值}ArcNode;typedef struct VNode{VexType data; //顶点信息ArcNode *firstarc; //指向第一个依附顶点的弧的指针}VNode,AdjList;typedef struct ALGraph{AdjList vertices;int vexnum,arcnum; //图的当前顶点数和弧数int kind; //图的种类标志}ALGraph;int InitALGraph(ALGraph &G); //建造一个空图int LocateVex(ALGraph G,VexType v); //找到图中节点v中的位置int Build_AdjList(ALGraph &G); //输入有向图的顶点数,边数,顶点信息和边的信息建立邻接表int InitALGraph(ALGraph &G) //建造一个空的图{G.arcnum=G.vexnum=0;for(int i=0;i《MAX_VERTEX_NUM;i++){G.vertices.data=0;G.vertices.firstarc=NULL;}return 0;}int LocateVex(ALGraph G,VexType v) //找到G中v定点在图中的位置{for(int i=0;i《MAX_VERTEX_NUM;i++){if(G.vertices.data==v)return i;}return -1;}int Build_AdjList(ALGraph &G) //输入有向图的顶点数,边数,顶点信息和边的信息建立邻接表{ InitALGraph(G); int v,a,m,i,j; //v表示有向图的定点数,a表示边数; char t,h,ch; //t代表弧头,h代表弧尾 ArcNode *p,*q; cout《《"输入节点数:"; cin》》v; if(v《0) return ERROR; //顶点数不能为负 G.vexnum=v; cout《《"输入边数:"; cin》》a; if(a《0) return ERROR; //边数不能为负 G.arcnum=a; cout《《"输入各个定点:"; for(m=0;m《v;m++) { cin》》ch; G.vertices.data=ch; //输入各顶点的符号 } cout《《"输入各个边的弧头和弧尾:"; for(m=1;m《=a;m++) { cin》》t;cin》》h; //t为弧尾,h为弧头 if((i=LocateVex(G,t))《0) return ERROR; if((j=LocateVex(G,h))《0) return ERROR; //顶点未找到 p=(ArcNode*)malloc(sizeof(ArcNode)); //创建新的节点,并将其赋值p-》adjvex=j;p-》nextarc=NULL;if(!G.vertices.firstarc) //创建链表G.vertices.firstarc=p; else {for(q=G.vertices.firstarc;q-》nextarc;q=q-》nextarc);q-》nextarc=p; } }//while return OK;}//Build_AdjListbool Visited; //访问标志数组int FirstAdjVex(ALGraph G,int v) //返回第一个邻接顶点{if(G.vertices.firstarc)return G.vertices.firstarc-》adjvex;else return ERROR;}int NextAdjVex(ALGraph G,int v,int w) //返回W后的邻接顶点{ArcNode *q;for(q=G.vertices.firstarc;q-》nextarc;q=q-》nextarc)if(q-》adjvex==w)return q-》nextarc-》adjvex;return ERROR; }void DFS(ALGraph G,int v) //DFS算法,深度优先搜索{int w;Visited=true;cout《《G.vertices.data;for(w=FirstAdjVex(G,v);w》=0;w=NextAdjVex(G,v,w))if(!Visited)DFS(G,w);}void DFSTraverse(ALGraph G) //深度优先搜索图G{int v;for(v=0;v《G.vexnum;++v)Visited=false;for(v=0;v《G.vexnum;++v)if(!Visited)DFS(G,v);}typedef struct {int *base; //初始化动态分配存储空间int front; //头指针,若队列不空,只想队列头元素int rear; //尾指针,若队列不空,只想队列尾元素的下一个位置}SqQueue;int InitQueue(SqQueue &Q){//构造一个空队列Q.base=(int *)malloc(MAXQSIZE*sizeof(int));if(!Q.base)exit(-1);Q.front=Q.rear=0;return OK;}int QueueLenth(SqQueue Q){//返回Q的元素个数。即队列的长度return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;}int EnQueue(SqQueue &Q,int e){//插入元素e为Q的新的队尾元素if((Q.rear+1)%MAXQSIZE==Q.front)return ERROR;//队列已满Q.base=e;Q.rear=(Q.rear+1)%MAXQSIZE;return OK;}int DeQueue(SqQueue &Q,int &e){//若队列不空,则删除Q的对头元素。用e返回其值。//否则返回ERRORif(Q.front==Q.rear)return ERROR;e=Q.base;Q.front=(Q.front+1)%MAXQSIZE;return OK;}int Empty(SqQueue Q){//判断是否为空return Q.rear-Q.front;}void BFSTraverse(ALGraph G){//广度优先遍历int w,v,u;for(v=0;v《G.vexnum;v++)Visited=false;SqQueue Q;InitQueue(Q);for(v=0;v《G.vexnum;v++){if(Visited==false){EnQueue(Q,v);Visited=true;cout《《G.vertices.data;while(Empty(Q)){DeQueue(Q,u);for(w=FirstAdjVex(G,u);w》=0;w=NextAdjVex(G,u,w)){if(!Visited){Visited=true;cout《《G.vertices.data;EnQueue(Q,w);}}}}}}int main(){ALGraph G;Build_AdjList(G);cout《《"深度优先遍历:"《《endl;DFSTraverse(G);cout《《"广度优先遍历:"《《endl;BFSTraverse(G);return OK;}

数据结构 试题 求答案

首先,定义一个数组存放上表所有数据(共46个数据)。设这个数组为A(46)然后按下列步骤进行排序计算1)A(1)≤A(2)?是转第2步,否则A(1)《--》A(2)(即A(1)、A(2)值互换,实现A(1)≤A(2))2)A(2)≤A(3)?是(说明A(1)≤A(2)≤A(3))转第3步,否则A(2)《--》A(3)(实现A(2)≤A(3))A(1)≤A(2)?是(说明A(1)≤A(2)≤A(3))转第3步,否则A(1)《--》A(2)(实现A(1)≤A(2)≤A(3))3)A(3)≤A(4)?是(说明A(1)≤A(2)≤A(3)≤A(4))转第4步,否则A(3)《--》A(4)(实现A(3)≤A(4))A(3)≥A(2)?是(说明A(1)≤A(2)≤A(3)≤A(4))转第4步,否则A(2)《--》A(3)(实现A(2)≤A(3))A(2)≥A(1)?是(说明A(1)≤A(2)≤A(3)≤A(4))转第4步,否则A(1)《--》A(2)(实现A(1)≤A(2)≤A(3)≤A(4))4)A(4)≤A(5)?是(说明A(1)≤A(2)≤A(3)≤A(4)≤A(5))转第5步,否则A(4)《--》A(5)(实现A(4)≤A(5))A(4)≥A(3)?是(说明A(1)≤A(2)≤A(3)≤A(4)≤A(5))转第5步,否则A(3)《--》A(4)(实现A(3)≤A(4))A(3)≥A(4)?是(说明A(1)≤A(2)≤A(3)≤A(4)≤A(5))转第5步,否则A(2)《--》A(3)(实现A(2)≤A(3))A(2)≥A(1)?是(说明A(1)≤A(2)≤A(3)≤A(4)≤A(5))转第5步,否则A(1)《--》A(2)(实现A(1)≤A(2)≤A(3)≤A(4)≤A(5))5)A(5)≤A(6)?是转第6步,否则A(5)《--》A(6)A(5)≥A(4)?是转第6步,否则A(4)《--》A(5)A(4)≥A(3)?是转第6步,否则A(3)《--》A(4)A(3)≥A(2)?是转第6步,否则A(2)《--》A(3)A(2)≥A(1)?是转第6步,否则A(1)《--》A(2)6)......按如上思路进行下去,即可实现A(46)数组按升序重排。由上述1)~5)步的比较过程可以看出,每执行一步,就完成一次若干组数据从小到大的排序,且执行比较时,总是从已排好序的最大那个数开始,从大到小进行边比较边调整次序。另一个特点是,越到后面,每一步中需要比较与调整的数据越多。

数据结构题目 趴求答案啊啊啊啊 ,,求好心人帮助!!!另外因为是考题,所以可能有一些价值的,求达人助

1、空间复杂度2、链式3、x+c4、先进后出5、头/第一个6、2的7次方7、太费时间了,不给你算了

数据结构考试(复习题)答案 急求~~~~~

1.同22. C.教科书第一页,绪论1.1基本术语..........数据元素是数据的基本单位, 数据项是构成数据元素的不可分割的具有独立含义的最小标识单位 、3.B插入和删除最好的和最坏的时间复杂度是O(1),O(n).品均时间复杂度是O(n);4.B5.B6.详情请看数据结构实用教程c语言版的教材第86页,具有相同的逻辑结构(都是线性表) 可以采用相同的存储方法(顺序存储,链接存储)具有不同的运算特点栈是后进先出,队列是先进先出。8.b//79页12.有向图顶点与边的关系是n(n-1),无向图是n(n-1)/2,13.无向图中一个顶点的度是指与该顶点相关的边的条数,同(路径)14.C15.D16.217.18.Push pop

数据结构的题 求答案

集合,树形结构,图形结构,线性结构lognn 线性2/nn-i+1顶端 底端n-1LOC(a1)+k(i-1)3(i-1)+(j-i)+1哈希表8 7O(n*n) O(n*n) 完全二叉树 log(2)n取整加一2的五次方减一 2的四次方2i 2i+1 i/2取整N N-1

数据结构课程栈出栈入栈问题

题目中没有给出push、pop两个函数的实现代码,猜测出题者的本意,应该是入栈和出栈过程中顺便给对应变量赋值,据此,答案如下:最初x=’c’,y=’k’Push(S,x);//c入栈,栈中只有cPush(S,’a’);//a入栈,栈中有c、aPush(S,y);//k入栈,栈中有c、a、kPop(S,x);//k出栈,并赋值给x,此时x=k,栈中有c、aPush(S,’t’);//t入栈,栈中有c、a、tPush(S,x);//x入栈,即k入栈,栈中有c、a、t、kPop(S,x);//x出栈,即k出栈,此时x=k,栈中有c、a、tPush(S,’s’);//s入栈,栈中有c、a、t、s接下来通过循环做出栈动作,每次循环把栈顶的数据送给y,并打印,故依次打印s、t、a、c,最后再打印x,x的值是k

文章分享结束,数据结构教程第六版答案和要命的数据结构课程设计题目啊!!!的答案你都知道了吗?欢迎再次光临本站哦!

数据结构教程第六版答案(要命的数据结构课程设计题目啊!!!)

本文编辑:admin
Copyright © 2022 All Rights Reserved 威海上格软件有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.