《数据结构》实训报告

合集下载

数据结构实践课总结报告(2篇)

数据结构实践课总结报告(2篇)

第1篇一、前言数据结构是计算机科学中的基础课程之一,它主要研究数据的组织、存储、检索和维护方法。

通过学习数据结构,我们可以更好地理解和设计算法,提高计算机程序的效率。

本学期,我参加了数据结构实践课程,通过动手实践,我对数据结构有了更深入的理解和认识。

以下是我对本次实践课程的总结报告。

二、课程内容概述本次数据结构实践课程主要涵盖了以下内容:1. 线性表:包括顺序表和链表,以及它们的插入、删除、查找等操作。

2. 栈和队列:栈是一种后进先出(LIFO)的数据结构,队列是一种先进先出(FIFO)的数据结构。

3. 树:包括二叉树、二叉搜索树、平衡二叉树等,以及它们的遍历、查找、插入、删除等操作。

4. 图:包括图的邻接矩阵和邻接表表示,以及图的遍历、最短路径、最小生成树等算法。

5. 查找算法:包括二分查找、散列表查找等。

6. 排序算法:包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。

三、实践过程1. 课前准备在课程开始之前,我认真阅读了教材和参考资料,对数据结构的基本概念和理论有了初步的了解。

同时,我学习了C++、Java等编程语言,为实践课程打下了良好的基础。

2. 实践环节(1)线性表:我实现了顺序表和链表,并实现了插入、删除、查找等操作。

在实现过程中,我学习了数组和指针的使用,提高了我的编程能力。

(2)栈和队列:我实现了栈和队列,并实现了入栈、出栈、入队、出队等操作。

通过实践,我了解了栈和队列在实际应用中的优势。

(3)树:我实现了二叉树、二叉搜索树和平衡二叉树,并实现了查找、插入、删除等操作。

在实现过程中,我学习了递归的使用,提高了我的算法设计能力。

(4)图:我实现了图的邻接矩阵和邻接表表示,并实现了图的遍历、最短路径、最小生成树等算法。

通过实践,我了解了图在实际应用中的广泛用途。

(5)查找算法:我实现了二分查找和散列表查找,并比较了它们的优缺点。

在实现过程中,我学会了如何分析算法的效率。

(6)排序算法:我实现了冒泡排序、选择排序、插入排序、快速排序和归并排序,并比较了它们的性能。

数据结构实验实训报告范文

数据结构实验实训报告范文

一、实验目的1. 理解并掌握数据结构的基本概念和常用算法。

2. 学会使用C语言实现线性表、栈、队列、树和图等基本数据结构。

3. 培养动手实践能力,提高编程水平。

二、实验内容1. 线性表(1)顺序表(2)链表2. 栈(1)顺序栈(2)链栈3. 队列(1)顺序队列(2)链队列4. 树(1)二叉树(2)二叉搜索树5. 图(1)邻接矩阵表示法(2)邻接表表示法三、实验环境1. 操作系统:Windows 102. 编程语言:C语言3. 编译器:Visual Studio 20194. 实验软件:C语言开发环境四、实验步骤1. 线性表(1)顺序表1)定义顺序表结构体2)实现顺序表的初始化、插入、删除、查找等基本操作3)编写测试程序,验证顺序表的基本操作(2)链表1)定义链表结构体2)实现链表的创建、插入、删除、查找等基本操作3)编写测试程序,验证链表的基本操作2. 栈(1)顺序栈1)定义顺序栈结构体2)实现顺序栈的初始化、入栈、出栈、判空等基本操作3)编写测试程序,验证顺序栈的基本操作(2)链栈1)定义链栈结构体2)实现链栈的初始化、入栈、出栈、判空等基本操作3)编写测试程序,验证链栈的基本操作3. 队列(1)顺序队列1)定义顺序队列结构体2)实现顺序队列的初始化、入队、出队、判空等基本操作3)编写测试程序,验证顺序队列的基本操作(2)链队列1)定义链队列结构体2)实现链队列的初始化、入队、出队、判空等基本操作3)编写测试程序,验证链队列的基本操作4. 树(1)二叉树1)定义二叉树结构体2)实现二叉树的创建、遍历、查找等基本操作3)编写测试程序,验证二叉树的基本操作(2)二叉搜索树1)定义二叉搜索树结构体2)实现二叉搜索树的创建、遍历、查找等基本操作3)编写测试程序,验证二叉搜索树的基本操作5. 图(1)邻接矩阵表示法1)定义邻接矩阵结构体2)实现图的创建、添加边、删除边、遍历等基本操作3)编写测试程序,验证邻接矩阵表示法的基本操作(2)邻接表表示法1)定义邻接表结构体2)实现图的创建、添加边、删除边、遍历等基本操作3)编写测试程序,验证邻接表表示法的基本操作五、实验结果与分析1. 线性表(1)顺序表实验结果表明,顺序表的基本操作实现正确,测试程序运行稳定。

数据机构实训总结报告

数据机构实训总结报告

一、引言随着计算机科学技术的不断发展,数据结构作为计算机科学的核心基础课程,对于提高计算机程序设计能力和算法优化具有重要意义。

为了提高我们的数据结构理论知识和实际应用能力,我们进行了为期一个月的数据结构实训。

本次实训内容丰富,形式多样,通过实践操作,我们掌握了各种数据结构的特点、实现方法及应用场景,现将实训总结如下。

二、实训内容1. 数据结构理论学习实训期间,我们重点学习了以下数据结构:(1)线性结构:线性表、栈、队列、双端队列。

(2)非线性结构:树、二叉树、图。

(3)高级数据结构:哈希表、散列表、字典树、并查集。

2. 数据结构实现与算法分析实训中,我们运用C++、Java等编程语言实现了上述数据结构,并对关键算法进行了分析,包括:(1)线性结构:插入、删除、查找、排序等。

(2)非线性结构:遍历、查找、插入、删除、路径查找等。

(3)高级数据结构:查找、插入、删除、合并等。

3. 数据结构应用案例分析实训过程中,我们结合实际案例,分析了数据结构在计算机科学、人工智能、数据库、网络通信等领域的应用,如:(1)线性结构在操作系统进程管理中的应用。

(2)树和图在社交网络、网络拓扑结构中的应用。

(3)哈希表在数据库索引、缓存中的应用。

三、实训成果1. 提高数据结构理论水平通过本次实训,我们对数据结构的基本概念、特点、实现方法有了更加深入的了解,为今后的学习和工作打下了坚实的基础。

2. 增强编程能力在实训过程中,我们动手实现了各种数据结构,提高了编程能力,学会了如何将理论知识应用于实际编程。

3. 提升算法分析能力通过对关键算法的分析,我们学会了如何分析算法的时间复杂度和空间复杂度,为今后的算法优化提供了理论依据。

4. 培养团队协作精神在实训过程中,我们分组合作,共同完成了实训任务,培养了团队协作精神。

四、实训心得1. 理论与实践相结合在实训过程中,我们深刻体会到理论联系实际的重要性。

只有将理论知识与实际编程相结合,才能真正掌握数据结构。

数据结构的实践总结报告(2篇)

数据结构的实践总结报告(2篇)

第1篇一、引言随着计算机科学的不断发展,数据结构作为计算机科学中的基础课程,其重要性日益凸显。

通过对数据结构的深入学习与实践,可以提高编程能力,优化算法设计,提高程序运行效率。

本报告将对我所进行的数据结构实践过程进行总结,以期为今后的学习和工作提供借鉴。

二、实践过程1. 实践目的本次实践旨在通过学习数据结构的基本概念、原理和方法,掌握常见数据结构的实现,提高编程能力和算法设计能力。

2. 实践内容(1)线性表:学习了线性表的基本概念、顺序存储和链式存储两种实现方式,掌握了插入、删除、查找等操作。

(2)栈与队列:学习了栈和队列的基本概念,掌握了栈和队列的顺序存储和链式存储两种实现方式,以及入栈、出栈、入队、出队等操作。

(3)树:学习了树的基本概念,掌握了二叉树、二叉搜索树、平衡二叉树等常见树结构的实现,以及遍历、查找、插入、删除等操作。

(4)图:学习了图的基本概念,掌握了图的邻接矩阵和邻接表两种存储方式,以及图的遍历、最短路径、最小生成树等算法。

(5)查找与排序:学习了查找与排序的基本概念,掌握了二分查找、快速排序、归并排序、堆排序等常见算法。

3. 实践方法(1)理论学习:通过查阅相关书籍、网络资源,对数据结构的基本概念、原理和方法进行深入学习。

(2)编程实践:使用C/C++、Java等编程语言,实现各种数据结构,并进行调试和优化。

(3)算法分析:对实现的算法进行时间复杂度和空间复杂度分析,以提高程序运行效率。

(4)项目实践:结合实际应用场景,设计并实现数据结构在具体问题中的应用。

三、实践成果1. 掌握了数据结构的基本概念、原理和方法。

2. 能够熟练使用C/C++、Java等编程语言实现常见数据结构。

3. 能够根据实际问题选择合适的数据结构,并设计高效算法。

4. 提高了编程能力和算法设计能力。

四、实践心得1. 数据结构是计算机科学的基础,对提高编程能力和算法设计能力具有重要意义。

2. 理论学习与实践相结合,才能更好地掌握数据结构。

数据结构实训论文总结报告

数据结构实训论文总结报告

摘要:本文通过对数据结构实训的深入学习和实践,总结了实训过程中的心得体会,对链表、栈、队列、树等常见数据结构进行了详细的分析,探讨了数据结构在实际问题中的应用。

通过实训,提高了数据结构的理解和运用能力,为今后的学习和工作打下了坚实的基础。

一、引言数据结构是计算机科学中一个重要的基础学科,它研究数据的存储、组织、检索和操作。

掌握数据结构对于解决实际问题具有重要意义。

本次实训旨在通过实际操作,加深对数据结构理论知识的理解,提高编程能力,培养解决实际问题的能力。

二、实训内容1. 链表链表是一种常见的数据结构,由一系列节点组成,每个节点包含一个数据和指向下一个节点的指针。

实训过程中,我们学习了链表的创建、插入、删除、查找等操作。

通过实现链表,我们了解了链表在解决实际问题中的应用,如实现动态数组、栈、队列等。

2. 栈栈是一种后进先出(LIFO)的数据结构,只允许在一端进行插入和删除操作。

实训中,我们学习了栈的创建、入栈、出栈、判空等操作。

通过实现栈,我们了解了栈在表达式求值、函数调用栈等场景中的应用。

3. 队列队列是一种先进先出(FIFO)的数据结构,只允许在一端进行插入操作,在另一端进行删除操作。

实训中,我们学习了队列的创建、入队、出队、判空等操作。

通过实现队列,我们了解了队列在广度优先搜索、进程调度等场景中的应用。

4. 树树是一种非线性数据结构,由节点组成,节点之间有父子关系。

实训中,我们学习了二叉树、二叉搜索树、堆等常见树结构。

通过实现树,我们了解了树在查找、排序、优先队列等场景中的应用。

三、实训心得体会1. 理论与实践相结合通过本次实训,我深刻体会到理论与实践相结合的重要性。

在理论学习阶段,我们学习了数据结构的基本概念、原理和方法,但仅有理论知识是远远不够的。

通过实际操作,我们能够更好地理解数据结构的内涵,提高编程能力。

2. 代码规范与优化在实训过程中,我们遵循代码规范,注意代码的可读性和可维护性。

数据结构实训实验报告

数据结构实训实验报告

一、实验背景数据结构是计算机科学中一个重要的基础学科,它研究如何有效地组织和存储数据,并实现对数据的检索、插入、删除等操作。

为了更好地理解数据结构的概念和原理,我们进行了一次数据结构实训实验,通过实际操作来加深对数据结构的认识。

二、实验目的1. 掌握常见数据结构(如线性表、栈、队列、树、图等)的定义、特点及操作方法。

2. 熟练运用数据结构解决实际问题,提高算法设计能力。

3. 培养团队合作精神,提高实验报告撰写能力。

三、实验内容本次实验主要包括以下内容:1. 线性表(1)实现线性表的顺序存储和链式存储。

(2)实现线性表的插入、删除、查找等操作。

2. 栈与队列(1)实现栈的顺序存储和链式存储。

(2)实现栈的入栈、出栈、判断栈空等操作。

(3)实现队列的顺序存储和链式存储。

(4)实现队列的入队、出队、判断队空等操作。

3. 树与图(1)实现二叉树的顺序存储和链式存储。

(2)实现二叉树的遍历、查找、插入、删除等操作。

(3)实现图的邻接矩阵和邻接表存储。

(4)实现图的深度优先遍历和广度优先遍历。

4. 算法设计与应用(1)实现冒泡排序、选择排序、插入排序等基本排序算法。

(2)实现二分查找算法。

(3)设计并实现一个简单的学生成绩管理系统。

四、实验步骤1. 熟悉实验要求,明确实验目的和内容。

2. 编写代码实现实验内容,对每个数据结构进行测试。

3. 对实验结果进行分析,总结实验过程中的问题和经验。

4. 撰写实验报告,包括实验目的、内容、步骤、结果分析等。

五、实验结果与分析1. 线性表(1)顺序存储的线性表实现简单,但插入和删除操作效率较低。

(2)链式存储的线性表插入和删除操作效率较高,但存储空间占用较大。

2. 栈与队列(1)栈和队列的顺序存储和链式存储实现简单,但顺序存储空间利用率较低。

(2)栈和队列的入栈、出队、判断空等操作实现简单,但需要考虑数据结构的边界条件。

3. 树与图(1)二叉树和图的存储结构实现复杂,但能够有效地表示和处理数据。

数据结构的实训报告结果

数据结构的实训报告结果

一、实训目的本次数据结构实训旨在通过实践操作,加深对数据结构理论知识的理解,提高解决实际问题的能力。

通过实训,使学生能够熟练掌握各种基本数据结构及其操作方法,并能够将这些知识应用于解决实际问题。

二、实训环境1. 操作系统:Windows 102. 编程语言:C语言3. 开发环境:Visual Studio 20194. 实训教材:《数据结构》(C语言版)三、实训内容本次实训主要内容包括线性表、栈、队列、树、图等基本数据结构的创建、操作和应用。

1. 线性表(1)单链表的创建、插入、删除和查找操作(2)双向链表的创建、插入、删除和查找操作(3)循环链表的创建、插入、删除和查找操作2. 栈(1)栈的创建、入栈、出栈和判断栈空操作(2)应用栈实现括号匹配3. 队列(1)队列的创建、入队、出队和判断队列空操作(2)应用队列实现广度优先搜索4. 树(1)二叉树的创建、插入、删除和遍历操作(2)二叉查找树的创建、插入、删除和查找操作5. 图(1)图的创建、添加边、删除边和遍历操作(2)图的深度优先遍历和广度优先遍历四、实训过程1. 线性表首先,我们学习了单链表、双向链表和循环链表的基本概念和创建方法。

通过编写代码,实现了链表的插入、删除和查找操作。

在实训过程中,我们遇到了一些问题,如链表插入操作时指针的移动、删除操作时避免内存泄漏等。

通过查阅资料和与同学讨论,我们逐步解决了这些问题。

2. 栈接着,我们学习了栈的基本概念和操作方法。

通过编写代码,实现了栈的创建、入栈、出栈和判断栈空操作。

在实训过程中,我们遇到了栈空和栈满的情况,通过设置标志位和循环队列的方法解决了这些问题。

此外,我们还学习了应用栈实现括号匹配,加深了对栈的应用理解。

3. 队列然后,我们学习了队列的基本概念和操作方法。

通过编写代码,实现了队列的创建、入队、出队和判断队列空操作。

在实训过程中,我们遇到了队列空和队列满的情况,通过设置标志位和循环队列的方法解决了这些问题。

数据结构 实验报告

数据结构 实验报告

数据结构实验报告一、实验目的数据结构是计算机科学中非常重要的一门课程,通过本次实验,旨在加深对常见数据结构(如链表、栈、队列、树、图等)的理解和应用,提高编程能力和解决实际问题的能力。

二、实验环境本次实验使用的编程语言为C++,开发工具为Visual Studio 2019。

操作系统为 Windows 10。

三、实验内容1、链表的实现与操作创建一个单向链表,并实现插入、删除和遍历节点的功能。

对链表进行排序,如冒泡排序或插入排序。

2、栈和队列的应用用栈实现表达式求值,能够处理加、减、乘、除和括号。

利用队列实现银行排队系统的模拟,包括顾客的到达、服务和离开。

3、二叉树的遍历与操作构建一棵二叉树,并实现前序、中序和后序遍历。

进行二叉树的插入、删除节点操作。

4、图的表示与遍历用邻接矩阵和邻接表两种方式表示图。

实现图的深度优先遍历和广度优先遍历。

四、实验步骤及结果1、链表的实现与操作首先,定义了链表节点的结构体:```cppstruct ListNode {int data;ListNode next;ListNode(int x) : data(x), next(NULL) {}};```插入节点的函数:```cppvoid insertNode(ListNode& head, int val) {ListNode newNode = new ListNode(val);head = newNode;} else {ListNode curr = head;while (curr>next!= NULL) {curr = curr>next;}curr>next = newNode;}}```删除节点的函数:```cppvoid deleteNode(ListNode& head, int val) {if (head == NULL) {return;}ListNode temp = head;head = head>next;delete temp;return;}ListNode curr = head;while (curr>next!= NULL && curr>next>data!= val) {curr = curr>next;}if (curr>next!= NULL) {ListNode temp = curr>next;curr>next = curr>next>next;delete temp;}}```遍历链表的函数:```cppvoid traverseList(ListNode head) {ListNode curr = head;while (curr!= NULL) {std::cout << curr>data <<"";curr = curr>next;}std::cout << std::endl;}```对链表进行冒泡排序的函数:```cppvoid bubbleSortList(ListNode& head) {if (head == NULL || head>next == NULL) {return;}bool swapped;ListNode ptr1;ListNode lptr = NULL;do {swapped = false;ptr1 = head;while (ptr1->next!= lptr) {if (ptr1->data > ptr1->next>data) {int temp = ptr1->data;ptr1->data = ptr1->next>data;ptr1->next>data = temp;swapped = true;}ptr1 = ptr1->next;}lptr = ptr1;} while (swapped);}```测试结果:创建了一个包含 5、3、8、1、4 的链表,经过排序后,输出为 1 3 4 5 8 。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一线性表1.实验要求1.1掌握数据结构中线性表的基本概念。

1.2熟练掌握线性表的基本操作:创建、插入、删除、查找、输出、求长度及合并并运算在顺序存储结构上的实验。

1.3熟练掌握链表的各种操作和应用。

2.实验内容2.1编写一个函数,从一个给定的顺序表A中删除元素值在x到y之间的所有元素,要求以较高效率来实现。

2.2试写一个算法,在无头结点的动态单链表上实现线性表插入操作2.3设计一个统计选票的算法,输出每个候选人的得票结果。

3.实验代码2.1代码:#include<stdio.h>typedef int elemtype;#define maxsize 10int del(int A[],int n,elemtype x,elemtype y){int i=0,k=0;while(i<n){if(A[i]>=x&&A[i]<=y)k++;elseA[i-k]=A[i];i++;}return(n-k);}void main(){int i,j;int a[maxsize];printf("输入%d个数:\n",maxsize);for(i=0;i<maxsize;i++)scanf("%d,",&a[i]);——j=del(a,maxsize,1,3);printf("输出删除后剩下的数:\n");for(i=0;i<j;i++)printf("%d "\n,a[i]);}2.2代码:INSERT(L,i,b)。

void Insert(Linklist &L,int i,elemtype x){if(!L){L=(Linklist)malloc(sizeof(Lnode));(*L).data=x;(*L).next=NULL;}else{if(i==1){s=(Linklist)malloc(sizeof(Lnode));s->data=x;s->next=L;L=s;}else{p=L;j=1;while(p&&j<i-1){j++;p=p->next;}if(p||j>i-1)return error;s=(Linklist)malloc(sizeof(Lnode));s->data=x;s->next=p->next;p->next=s;}}}2.3代码:typedef int elemtypetypedef struct linknode{elemtype data;struct linknode *next;}nodetype;——nodetype *create(){elemtype d;nodetype h=NULL,*s,*t;int i=1;printf("建立单链表:\n");while(1){printf("输入第%d个结点数据域",i);scanf("%d",&d);if(d==0)break;if(i==1){h=(nodetype *)malloc(sizeof(nodetype));h->data=d;h->next=NULL;t=h;}else{s=(nodetype *)malloc(sizeof(nodetype));s->data=d;s->next=NULL;t->next=s;t=s;}i++;}return h;}void sat(nodetype *h,int a[]){nodetype *p=h;while(p!=NULL){a[p->data]++;p=p->next;}}void main(){int a[N+1],i;for(i=0;i<N;i++)a[i]=0;nodetype *head;head=create();sat(head,a);——printf("候选人:");for(i=1;i<=N;i++) printf("%3d",i);printf("\n得票数\n");for(i=1;i<=N;i++)printf("%3d",a[i]);printf("\n");}4.实验小结线性表是最简单的、最常用的一种数据结构,是实现其他数据结构的基础。

实验二栈与队列1.实验要求1.1了解栈和队列的特性,以便灵活运用。

1.2熟练掌握栈和有关队列的各种操作和应用。

2.实验内容2.1设一个算术表达式包括圆括号,方括号和花括号三种括号,编写一个算法判断其中的括号是否匹配。

3.实验代码2.1代码:#include<stdio.h>#include<malloc.h>#include<string.h>#define NULL 0typedef struct list{char str;struct list *next;}list;void push(char,list *);int pop(char.list *);void deal(char *str);main(void){char str[20];printf("\n请输入一个算式:\n");——gets(str);deal(str);printf("正确!");getchar();return 0;}void deal(char *str){list *L;L=(list *)malloc(sizeof(list));if(!L){printf("错误!");exit(-2);}L->next=NULL;while(*str){if(*str=='('||*str=='['||*str=='{')push(*str,L);elseif(*str==')'||*str==']'||*str=='}')if(pop(*str,L)){puts("错误,请检查!");puts("按回车键退出");getchar();exit(-2);}str++;}if(L->next){puts("错误,请检查!");puts("按任意键退出");getchar();exit(-2);}}void push(char c,list *L){list *p;p=(list *)malloc(sizeof(list));if(!p){printf("错误!");exit(-2);——}p->str=c;p->next=L->next;L->next=p;}#define check(s) if(L->next->str==s){p=l->next;L->next=p->next;free(p);return(0);} int pop(char c,list *L){list *p;if(L->next==NULL)return 1;switch(c){case')':check('(') break;case']':check('[') break;case'}':check('{') break;}return 1;4.实验小结栈和队列是最基础的一种数据结构之一,为实现其他数据结构的奠定基石。

实验三树1.实验要求1.1掌握二叉树,二叉树排序数的概念和存储方法。

1.2掌握二叉树的遍历算法。

1.3熟练掌握编写实现树的各种运算的算法。

2.实验内容2.1编写程序,求二叉树的结点数和叶子数。

2.2编写递归算法,求二叉树中以元素值为X的结点为根的子数的深度。

2.3编写程序,实现二叉树的先序,中序,后序遍历,并求其深度。

——3.实验代码2.1代码:#include<stdio.h>#include<malloc.h>struct node{char data;struct node *lchild,*rchild;}bnode;typedef struct node *blink;blink creat(){blink bt;char ch;ch=getchar();if(ch==' ') return(NULL);else{bt=(struct node *)malloc(sizeof(bnode));bt->data=ch;bt->lchild=creat();bt->rchild=creat();}return bt;}int n=0,n1=0;void preorder(blink bt){if (bt){n++;if(bt->lchild==NULL&&bt->rchild==NULL)n1++;preorder(bt->lchild);preorder(bt->rchild);}}void main(){blink root;root=creat();preorder(root);printf("此二叉数的接点数有:%d\n",n);printf("此二叉数的叶子数有:%d\n",n1);}——2.2代码:int get_deep(bitree T,int x){if(T->data==x){printf("%d\n",get_deep(T));exit 1;}else{if(T->lchild)get_deep(T->lchild,x);if(T->rchild)get_deep(T->rchild,x);}int get_depth(bitree T){if(!T)return 0;else{m=get_depth(T->lchild);n=get_depth(T->rchild);return(m>n?m:n)+1;}}2.3代码:#include<stdio.h>#include<malloc.h>struct node{char data;struct node *lchild,*rchild;}bnode;typedef struct node *blink;blink creat(){blink bt;char ch;ch=getchar();if(ch==' ') return(NULL);else{bt=(struct node *)malloc(sizeof(bnode));bt->data=ch;——bt->lchild=creat();bt->rchild=creat();}return bt;}void preorder(blink bt){if (bt){printf("%c",bt->data);preorder(bt->lchild);preorder(bt->rchild);}}void inorder(blink bt){if(bt){inorder(bt->lchild);printf("%c",bt->data);inorder(bt->rchild);}}void postorder(blink bt){if(bt){postorder(bt->lchild);postorder(bt->rchild);printf("%c",bt->data);}}int max(int x,int y){if(x>y)return x;elsereturn y;}int depth(blink bt){if (bt)return 1+max(depth(bt->lchild),depth(bt->rchild));else——return 0;}void main(){blink root;root=creat();printf("\n");printf("按先序排列:");preorder(root);printf("\n");printf("按中序排列:");inorder(root);printf("\n");printf("按后序排列:");postorder(root);printf("\n");printf("此二叉数的深度是:");printf("depth=%d\n",depth(root));}4.实验小结通过本章学习实验,对树有了初步的认识。

相关文档
最新文档