《数据结构》(C语言版)严蔚敏著_实验指导_第1页
《数据结构》(C语言版)严蔚敏著_实验指导_第2页
《数据结构》(C语言版)严蔚敏著_实验指导_第3页
《数据结构》(C语言版)严蔚敏著_实验指导_第4页
《数据结构》(C语言版)严蔚敏著_实验指导_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、v1.0可编辑可修改数据结构实验指导及报告书/学年第一学期姓 名:学 号:班 级:指导教师:数学与统计学院201111v1.0可编辑可修改预备实验 C语言的函数数组指针结构体知识一、实验目的1、复习c语言中函数、数组、指针、结构体与共用体等的概念。2、熟悉利用C语言进行程序设计的一般方法。二、实验预习说明以下C语言中的概念1、函数:2、数组:3、指针:4、结构体5、共用体三、实验内容和要求1、调试程序:输出100以内所有的素数(用函数实现)。#include<>int isprime(int n)/*判断一个数是否为素数 */int m;for(m=2;m*m<=n;m+)i

2、f(n%m=0) return 0;return 1;22v1.0可编辑可修改33int main() /*输出100以内所有素数*/int i; printf("n");for(i=2;i<100;i+)if(isprime(i)=1) printf("%4d",i);return 0;运行结果:2、调试程序:对一维数组中的元素进行逆序排列。#include<>#define N 10int main()int aN尸0,1,2,3,4,5,6,7,8,9,i,temp;printf("nthe original Array

3、 is:n ");for(i=0;i<N;i+)printf("%4d",ai);*/for(i=0;i<N/2;i+)/*交换数组元素使之逆序temp=ai;ai=aN-i-1;aN-i-1=temp;printf("nthe changed Array is:n");for(i=0;i<N;i+)printf("%4d",ai);return 0;v1.0可编辑可修改运行结果:3、调试程序:在二维数组中,若某一位置上的元素在该行中最大,而在该列中最小,则该元素即为该二维数组的一个鞍点。要求从键盘上输入一

4、个二维数组,当鞍点存在时,把鞍点找出来。#include<>#define M 3#define N 4int main()int aMN,i,j,k;printf("n请输入二维数组的数据:n");for(i=0;i<M;i+)for(j=0;j<N;j+)scanf("%d”,&aij);for(i=0;i<M;i+)/* 输出矩阵 */for(j=0;j<N;j+)printf("%4d",aij);printf("n");for(i=0;i<M;i+)k=0;for(

5、j=1;j<N;j+)/*找出第i行的最大值*/if(ai加aik)k=j;for(j=0;j<M;j+)/*判断第i行的最大值是否为该列的最小值*/44v1.0可编辑可修改if(a皿k<aik)break;if(j=M)/*在第i行找到鞍点*/printf("%d,%d,%dn",aik,i,k);return 0;运行结果:4、调试程序:利用指针输出二维数组的元素。#include<>int main()int a34=1,3,5,7,9,11,13,15,17,19,21,23;int *p;for(p=a0;p<a0+12;p+)

6、if(p-a0)%4=0) printf("n");printf("%4d",*p);return 0;运行结果:5、调试程序:设有一个教师与学生通用的表格,教师的数据有姓名、年龄、职业、教研室 四项,学生有姓名、年龄、专业、班级四项,编程输入人员的数据,再以表格输出。#include <>55v1.0可编辑可修改#define N 10struct studentchar name8;/*姓名*/int age;/*年龄*/char job;/*职业或专业,用s或t表示学生或教师*/union int class;/*班级*/char of

7、fice10; /*教研室*/depa;stuN;int main()int i; int n;printf( "n请输入人员数n );scanf( "%d ,&n);for(i=0;i<n;i+)/*输入n个人员的信息*/66printf("n请输入第 d人员的信息:(name age job class/office)n",i+1);scanf("%s,%d,%c",, &stui.age, &stui.job);if(stui.job= ' s')scanf(&qu

8、ot;%d",&stui.;elsescanf("%s",stui.;printf( "name age job class/office");for(i=0;i<n;i+)/* 输出 */stui.;if(stui.job= ' s')printf("%s %3d%3c%dn",, stui.age, stui.job,elsev1.0可编辑可修改printf("%s %3d%3c%sn",, stui.age, stui.job, st

9、ui.;输入的数据:2Wang 19 s 99061Li 36 t computer运行结果:四、实验小结五、教师评语77v1.0可编辑可修改实验一顺序表与链表一、实验目的1、掌握线性表中元素的前驱、后续的概念。2、掌握顺序表与链表的建立、插入元素、删除表中某元素的算法。3、对线性表相应算法的时间复杂度进行分析。4、理解顺序表、链表数据结构的特点(优缺点)。二、实验预习说明以下概念1、线性表:2、顺序表:3、链表:三、实验内容和要求1、阅读下面程序,在横线处填写函数的基本功能。并运行程序,写出结果。#include<>#include<>#define ERROR 0#

10、define OK 188#define INITSIZE 5 /*初始分配的顺序表长度*/#define INCREM 5/*溢出时,顺序表长度的增量 */typedef int ElemType; /*定义表元素的类型*/typedef struct Sqlistv1.0可编辑可修改ElemType *slist; /* int length; /* int listsize; /* Sqlist;存储空间的基地址*/顺序表的当前长度*/当前分配的存储空间*/int InitList_sq(Sqlist *L); /*/int CreateList_sq(Sqlist *L,int n);

11、 /*/int ListInsert_sq(Sqlist *L,int i,ElemType e);/*/ int PrintList_sq(Sqlist *L); /*输出顺序表的元素 */int ListDelete_sq(Sqlist *L,int i); /*删除第 i 个元素 */int ListLocate(Sqlist *L,ElemType e); /*查找值为 e 的元素 */ int InitList_sq(Sqlist *L)L->slist=(ElemType*)malloc(INIT_SIZE*sizeof(ElemType);if(!L->slist)

12、return ERROR;L->length=0;L->listsize=INIT_SIZE;return OK;/*InitList*/int CreateList_sq(Sqlist *L,int n)ElemType e;int i;for(i=0;i<n;i+)printf("input data %d",i+1);scanf("%d",&e);if(!ListInsert_sq(L,i+1,e)return ERROR;99v1.0可编辑可修改return OK;/*CreateList*/*输出顺序表中的元素*/in

13、t PrintList_sq(Sqlist *L)int i;for(i=1;i<=L->length;i+)printf("%5d",L->slisti-1);return OK;/*PrintList*/int ListInsert_sq(Sqlist *L,int ElemType e)int k;if(i<1|i>L->length+1)return ERROR;if(L->length>=L->listsize)L->slist=(ElemType*)realloc(L->slist,(INIT_S

14、IZE+INCREM)*sizeof(ElemType);if(!L->slist)return ERROR;L->listsize+=INCREM;for(k=L->length-1;k>=i-1;k-)L->slistk+1= L->slistk;L->slisti-1=e;1010v1.0可编辑可修改L->length+;return OK;/*ListInsert*/*在顺序表中删除第i个元素*/int ListDelete_sq(Sqlist *L,int i)/*在顺序表中查找指定值元素,返回其序号*/int ListLocate(S

15、qlist *L,ElemType e)int main()Sqlist sl;int n,m,k;printf("please input n:"); /*输入顺序表的元素个数*/scanf("%d",&n);if(n>0)printf("n1-Create Sqlist:n");InitList_sq(&sl);CreateList_sq(&sl,n);printf("n2-Print Sqlist:n");PrintList_sq(&sl);printf("np

16、lease input insert location and data:(location,data)n");scanf("%d,%d",&m,&k);ListInsert_sq(&sl,m,k);1111v1.0可编辑可修改printf("n3-Print Sqlist:n");PrintList_sq(&sl);printf("n");elseprintf("ERROR");return 0;运行结果算法分析2、为第1题补充删除和查找功能函数,并在主函数中补充代码验证

17、算法的正确性。删除算法代码:运行结果算法分析1212v1.0可编辑可修改查找算法代码:运行结果算法分析3、阅读下面程序,在横线处填写函数的基本功能。并运行程序,写出结果。#include<>#include<>#define ERROR 0#define OK 1typedef int ElemType;/*定义表元素的类型 */typedef struct LNode /*线性表的单链表存储 */ElemType data;struct LNode *next;1313v1.0可编辑可修改LNode,*LinkList;LinkList CreateList(int

18、n); /* void PrintList(LinkList L); /* int GetElem(LinkList L,int i,ElemType *e); /*LinkList CreateList(int n)LNode *p,*q,*head;int i;head=(LinkList)malloc(sizeof(LNode);p=head;for(i=0;i<n;i+)q=(LinkList)malloc(sizeof(LNode);scanf("%d",&q->data); /*q->next=NULL;/*p->next=q;/

19、*p=q;return head;/*CreateList*/void PrintList(LinkList L)LNode *p;p=L->next; /*p指向单链表的第while(p!=NULL)printf("%5d",p->data);*/head->next=NULL;1个元素*/输出带头结点单链表的所有元素*/*/printf("input data %i:",i+1);输入元素值*/结点指针域置空*/新结点连在表末尾*/p=p->next;1414v1.0可编辑可修改/*PrintList*/int GetElem

20、(LinkList L,int i,ElemType *e)LNode *p;int j=1;p=L->next;while(p&&j<i)p=p->next;j+;if(!p|j>i)return ERROR;*e=p->data;return OK;/*GetElem*/int main()int n,i;ElemType e;LinkList L=NULL;/*定义指向单链表的指针 */printf("please input n:"); /*输入单链表的元素个数 */scanf("%d",&n

21、);if(n>0)printf("n1-Create LinkList:n");L=CreateList(n);printf("n2-Print LinkList:n");PrintList(L);printf("n3-GetElem from LinkList:n");printf("input i=");scanf("%d",&i);1515v1.0可编辑可修改if(GetElem(L,i,&e)printf("No%i is %d",i,e);el

22、seprintf("not exists");elseprintf("ERROR");return 0;运行结果算法分析4、为第3题补充插入功能函数和删除功能函数。并在主函数中补充代码验证算法的正确性。插入算法代码:运行结果1616v1.0可编辑可修改算法分析删除算法代码:运行结果算法分析以下为选做实验:5、循环链表的应用(约瑟夫回环问题)n个数据元素构成一个环,从环中任意位置开始计数,计到m将该元素从表中取出,重复上述过程,直至表中只剩下一个元素。提示:用一个无头结点的循环单链表来实现n个元素的存储。算法代码1717v1.0可编辑可修改6、设一带头结点

23、的单链表,设计算法将表中值相同的元素仅保留一个结点。提示:指针p从链表的第一个元素开始,利用指针q从指针p位置开始向后搜索整个链表,删除与之值相同的元素;指针 p继续指向下一个元素,开始下一轮的删除,直至p= null为至,既完成了对整个链表元素的删除相同值。算法代码四、实验小结五、教师评语1818v1.0可编辑可修改实验二栈和队列一、实验目的1、掌握栈的结构特性及其入栈,出栈操作;2、掌握队列的结构特性及其入队、出队的操作,掌握循环队列的特点及其操作。二、实验预习说明以下概念1、顺序栈:2、链栈:3、循环队列:4、链队、实验内容和要求1、阅读下面程序,将函数 Push和函数Pop补充完整。要

24、求车入元素序列1 2 3 4 5 e ,运 行结果如下所示。D;Proqr4m Files1CodEBlock5console runnerjehe#include<>#include<>#define ERROR 0#define OK 1#define STACK_INT_SIZE 10 /*存储空间初始分配量 */#define STACKINCREMENT 5 /* 存储空间分配增量 */typedef int ElemType; /* 定义元素的类型 */typedef structElemType *base;ElemType *top;int stacks

25、ize; /*当前已分配的存储空间 */构造空栈*/SqStack;int InitStack(SqStack *S); /*int push(SqStack *S,ElemType e); /*入栈 */创建栈*/出栈并输出栈中元素*/int Pop(SqStack *S,ElemType *e); /* 出栈 */int CreateStack(SqStack *S);/*void PrintStack(SqStack *S); /* int InitStack(SqStack *S)S->base=(ElemType *)malloc(STACK_INT_SIZE *sizeof(

26、ElemType);if(!S->base) return ERROR;S->top=S->base;S->stacksize=STACK_INT_SIZE;return OK;/*InitStack*/ int Push(SqStack *S,ElemType e)/*Push*/2020v1.0可编辑可修改int Pop(SqStack *S,ElemType *e)/*Pop*/int CreateStack(SqStack *S)int e;if(InitStack(S)printf("Init Success!n");elseprintf(

27、"Init Fail!n");return ERROR;printf("input data:(Terminated by inputing a character)n");while(scanf("%d",&e)Push(S,e);return OK;/*CreateStack*/void PrintStack(SqStack *S)ElemType e;while(Pop(S,&e)printf("%3d",e);/*Pop_and_Print*/int main()SqStack ss;pri

28、ntf("n1-createStack'n");CreateStack(&ss);2121v1.0可编辑可修改printf("n2-Pop&Print'n");PrintStack(&ss);return 0;算法分析:输入元素序列1 23 4 5 ,为什么输出序列为5 4 3 2 1体现了栈的什么特性2、在第1题的程序中,编写一个十进制转换为二进制的数制转换算法函数(要求利用栈来实现),并验证其正确性。实现代码验证3、阅读并运行程序,并分析程序功能。#include<>#include<>

29、#include<>#define M 20#define elemtype char typedef structelemtype stackM;int top;stacknode;void init(stacknode *st);void push(stacknode *st,elemtype x);void pop(stacknode *st);void init(stacknode *st)st->top=0;void push(stacknode *st,elemtype x)if(st->top=M)printf("the stack is ove

30、rflow!n");elsest->top=st->top+1;st->stackst->top=x;void pop(stacknode *st)if(st->top>0) st->top-;else printf( "Stack is Empty!n ");int main()2323v1.0可编辑可修改char sM;int i;stacknode *sp;printf("create a empty stack!n");sp=malloc(sizeof(stacknode);init(sp);p

31、rintf("input a expression:n");gets(s);for(i=0;i<strlen(s);i+)if(si='(')push(sp,si);if(si=')')pop(sp);if(sp->top=0)printf("'('match')'!n");elseprintf("'('not match')'!n");return 0;输入:2+(c-d)*6-(f-7)*a)/6运行结果:输入:a-(c-d

32、)*6-(s/3-x)/2运行结果:程序的基本功能:以下为选做实验:4、设计算法,将一个表达式转换为后缀表达式,并按照后缀表达式进行计算,得出表达式 得结果。实现代码5、假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾结点(不设队头指针) 试编写相应的置空队列、入队列、出队列的算法。实现代码:四、实验小结2525v1.0可编辑可修改五、教师评语2626v1.0可编辑可修改实验三串的模式匹配一、实验目的1、了解串的基本概念2、掌握串的模式匹配算法的实现二、实验预习说明以下概念1、模式匹配:2、BF算法:3、KM法:三、实验内容和要求1、阅读并运行下面程序,根据输入写出运行结果。#inc

33、lude<>#include<>#define MAXSIZE 100typedef structchar dataMAXSIZE;int length;SqString;int strCompare(SqString *s1,SqString *s2); /*串的比较 */void show_strCompare();void strSub(SqString *s,int start,int sublen,SqString *sub);/*求子串*/void show_subString();int strCompare(SqString *s1,SqString *

34、s2)int i;for(i=0;i<s1->length&&i<s2->length;i+)if(s1->datai!=s2->datai)return s1->datai-s2->datai;return s1->length-s2->length;void show_strCompare()SqString s1,s2;int k;printf("n*show Compare*n");printf("input string s1:");gets;=strlen;print

35、f("input string s2:");gets;=strlen;if(k=strCompare(&s1,&s2)=0)printf("s1=s2n");else if(k<0)printf("s1<s2n");elseprintf("s1>s2n");printf("n*show over*n");2828v1.0可编辑可修改void strSub(SqString *s,int start,int sublen,SqString *sub)int i;i

36、f(start<1|start>s->length|sublen>s->length-start+1) sub->length=0;for(i=0;i<sublen;i+)sub->datai=s->datastart+i-1;sub->length=sublen;void show_subString()SqString s,sub;int start,sublen,i;printf("n*show subString*n");printf("input string s:");gets;=s

37、trlen;printf("input start:");scanf("%d",&start);printf("input sublen:");scanf("%d",&sublen);strSub(&s,start,sublen,&sub);if=0)printf("ERROR!n");elseprintf("subString is :");for(i=0;i<sublen;i+)printf("%c",i);pri

38、ntf("n*show over*n");int main()int n;do printf("n-String-n");printf("1. strCompare'n");printf("2. subString'n");printf("0. EXIT'n");printf("ninput choice:");scanf("%d",&n);getchar();switch(n)case 1:show_strCompare(

39、);break;case 2:show_subString();break;default:n=0;break;while(n);return 0;运行程序输入:13030v1.0可编辑可修改studentstudents2Computer Data Stuctures104运行结果:2、实现串的模式匹配算法。补充下面程序,实现串的BF和KM法。#include<>#include<>#define MAXSIZE 100typedef structchar dataMAXSIZE;int length;SqString;int index_bf(SqString *s

40、,SqString *t,int start);void getNext(SqString *t,int next);int index_kmp(SqString *s,SqString *t,int start,int next);void show_index();int index_bf(SqString *s,SqString *t,int start)补充代码.3131v1.0可编辑可修改void getNext(SqString *t,int next口儿int i=0,j=-1;next0=-1;while(i<t->length)if(j=-1)ll(t->d

41、atai=t->dataj)i+;j+;nexti=j;elsej=nextjint index_kmp(SqString *s,SqString *t,int start,int next)补充代码.void show_index()SqString s,t;int k,nextMAXSIZE尸0,i;printf("n*show index*n");printf("input string s:");gets;=strlen;printf("input string t:");gets;=strlen;printf(&quo

42、t;input start position:");scanf("%d",&k);printf("BF:nthe result of BF is %dn",index_bf(&s,&t,k);getNext(&t,next);printf("KMP:n");printf("next:");for(i=0;i<i+)printf("%3d",nexti);printf("n");printf("the result of

43、 KMP is %dn",index_kmp(&s,&t,k,next);printf("n*show over*n");int main()show_index();return 0;输入:abcaabbabcabaacbacba3333v1.0可编辑可修改abcabaa1运行结果:四、实验小结五、教师评语3434v1.0可编辑可修改3636实验四二叉树、实验目的1、掌握二叉树的基本特性2、掌握二叉树的先序、中序、后序的递归遍历算法3、理解二叉树的先序、中序、后序的非递归遍历算法4、通过求二叉树的深度、叶子结点数和层序遍历等算法,理解二叉树的基本

44、特性二、实验预习说明以下概念1、二叉树:2、递归遍历:3、非递归遍历:4、层序遍历:三、实验内容和要求1、阅读并运行下面程序,根据输入写出运行结果,并画出二叉树的形态。#include<> #include<>节点结构声明*/#define MAX 20 typedef struct BTNode /*char data ;/*节点数据*/指针*/struct BTNode *lchild;struct BTNode *rchild ; /* *BiTree;void createBiTree(BiTree *t) /*先序遍历创建二叉树 */char s;BiTree

45、 q;printf("nplease input data:(exit for #)");s=getche();if(s='#')*t=NULL; return;q=(BiTree)malloc(sizeof(struct BTNode);if(q=NULL)printf("Memory alloc failure!"); exit(0); q->data=s;*t=q;createBiTree(&q->lchild); /*createBiTree(&q->rchild); /*void PreOrde

46、r(BiTree p) /*if ( p!= NULL ) printf("%c", p->data);PreOrder( p->lchild );PreOrder( p->rchild);void InOrder(BiTree p) /*if( p!= NULL ) InOrder( p->lchild );printf("%c", p->data);递归建立左子树*/递归建立右子树*/先序遍历二叉树*/中序遍历二叉树*/InOrder( p->rchild);v1.0可编辑可修改void PostOrder(BiT

47、ree p) /*后序遍历二叉树 */if ( p!= NULL ) PostOrder( p->lchild );PostOrder( p->rchild);printf("%c", p->data);*/void Preorder_n(BiTree p) /*先序遍历的非递归算法BiTree stackMAX,q;int top=0,i;for(i=0;i<MAX;i+) stacki=NULL;/*初始化栈 */q=p;while(q!=NULL)printf("%c",q->data);if(q->rchild

48、!=NULL) stacktop+=q->rchild;if(q->lchild!=NULL) q=q->lchild;elseif(top>0) q=stack-top;else q=NULL;void release(BiTree t) /*释放二叉树空间 */if(t!=NULL)3737v1.0可编辑可修改release(t->lchild);release(t->rchild);free(t);int main()BiTree t=NULL;createBiTree(&t);printf("nnPreOrder the tree

49、is:");PreOrder(t);printf("nnInOrder the tree is:");InOrder(t);printf("nnPostOrder the tree is:");PostOrder(t);printf("nn先序遍历序列(非递归):");Preorder_n(t);release(t);return 0;运行程序输入:ABC#DE#G#F#运行结果:2、在上题中补充求二叉树中求结点总数算法(提示:可在某种遍历过程中统计遍历的结点数),并在主函数中补充相应的调用验证正确性。算法代码:3、在上题中

50、补充求二叉树中求 叶子结点总数算法(提示:可在某种遍历过程中统计遍历的叶子结点数),并在主函数中补充相应的调用验证正确性。算法代码:4、在上题中补充求二叉树深度算法,并在主函数中补充相应的调用验证正确性。算法代码:3939v1.0可编辑可修改选做实验:(代码可另附纸)4、补充二叉树层次遍历算法。(提示:利用队列实现)5、补充二叉树中序、后序非递归算法。四、实验小结五、教师评语4040v1.0可编辑可修改实验五图的表示与遍历一、实验目的1、掌握图的邻接矩阵和邻接表表示2、掌握图的深度优先和广度优先搜索方法3、理解图的应用方法二、实验预习说明以下概念1、深度优先搜索遍历:2、广度优先搜索遍历:3、

51、拓扑排序:4、最小生成树:5、最短路径:三、实验内容和要求1、阅读并运行下面程序,根据输入写出运行结果。#include<>#define N 20#define TRUE 1#define FALSE 0int visitedN;typedef struct /* 队列的定义 */4141v1.0可编辑可修改int dataN;int front,rear;queue;typedef struct /* 图的邻接矩阵*/int vexnum,arcnum;char vexsN;int arcsNN;建立一个无向图的邻接矩阵*/从第i个顶点出发深度优先搜索*/深度优先搜索整个图*/

52、从第k个顶点广度优先搜索*/广度优先搜索整个图*/初始化访问标识数组*/建立一个无向图的邻接矩阵*/graph;void createGraph(graph *g); /*void dfs(int i,graph *g); /*void tdfs(graph *g);/*void bfs(int k,graph *g); /*void tbfs(graph *g);/*void init_visit(); /*void createGraph(graph *g) /* int i,j;char v;g->vexnum=0;g->arcnum=0;i=0;printf("

53、输入顶点序列(以#结束):n");while(v=getchar()!='#')4242v1.0可编辑可修改g->vexsi=v; /*i+;g->vexnum=i; /*for(i=0;i<g->vexnum;i+) /*for(j=0;j<g->vexnum;j+) g->arcsij=0;printf("输入边的信息:scanf("%d,%d",&i,&j); /*while(i!=-1) /*g->arcsij=1;g->arcsji=1;scanf("

54、;%d,%d",&i,&j);读入顶点信息*/顶点数目*/邻接矩阵初始化*/n");读入边i,j*/读入i,j为一 1时结束*/4444从第i个顶点出发深度优先搜索*/void dfs(int i,graph *g) /*int j;printf("%c",g->vexsi);visitedi=TRUE;for(j=0;j<g->vexnum;j+)if(g->arcsij=1)&&(!visitedj) dfs(j,g);void tdfs(graph *g)/*深度优先搜索整个图*/int i;

55、printf("n 从顶点学始深度优先搜索序列:",g->vexs0);for(i=0;i<g->vexnum;i+)if(visitedi!=TRUE)从第k个顶点广度优先搜索*/dfs(i,g);void bfs(int k,graph *g) /*int i,j;queue qlist,*q;q=&qlist;q->rear=0;q->front=0;printf("%c",g->vexsk);visitedk=TRUE;q->dataq->rear=k;q->rear=(q->r

56、ear+1)%N;while(q->rear!=q->front)i=q->dataq->front;q->front=(q->front+1)%N;for(j=0;j<g->vexnum;j+)if(g->arcsij=1)&&(!visitedj)v1.0可编辑可修改printf("%c",g->vexsj);visitedj=TRUE;q->dataq->rear=j;q->rear=(q->rear+1)%N;void tbfs(graph *g) /*广度优先搜索整个图*/int i;printf("n 从顶点学始广度优先搜索序列:",g->vexs0);for(i=0;i<g->vexnum;i+)if(visitedi!=TRUE)bfs(i,g);void init_visit() /*初始化访问标识数组*/int i;for(i=0;i<N;i+)visitedi=FALSE;int main()graph ga;int i,j;4545v1.0可编辑可修改createGraph(&ga);printf("无向图的邻接矩阵:n");for(i=0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论