数据结构实验报告(六)

数据结构实验六排序 数据结构实验六排序 #include #include #define Maxsize 100 using namespace std; typedef int KeyType; typedef int InfoType; typedef struct { KeyType key; InfoType otherinfo; } RedType; typ 阅读详情

1.实验目的

1、理解树的结构特征及各种储存方法

2、掌握前序序列递归建树算法

3、掌握树的前序、后序及层次遍历,设计并实现树结构相关问题算法

2.实验内容

1、造树及前中后序遍历

2、层次遍历输出

3、凹入表示

4、括号表示

3.设计思路

首先进行树的创建,建树首先要造根,若为空树,返回NULL,非空树则先造结点,然后给结点所以域赋值。层次遍历的算法思想是1、根入队;2、while(队不空){2.1、p=出队元素2.2、打印p;2.3、p的所有非空孩子入队;},最后再实现凹入和括号表示算法。

4.关键代码

#include<stdio.h>

#include<stdlib.h>

# define m 3

# define MAX 20



typedef struct k{

   char data;

   struct k* c[m];

}tree;

typedef struct{

   tree* a[MAX];

   int f,r;

}Queue;

void initQueue(Queue *q){

   q->f=0; q->r=0;

}

int isEmpty(Queue *q){

   if(q->f==q->r) return 1;

   else return 0;

}

void enQueue(Queue *q, tree *x){

   q->a[ q->r ]=x;

   q->r=(q->r+1)%MAX;

}

tree* outQueue(Queue *q){

   tree *x;

   x=q->a[ q->f ];

   q->f=(q->f+1)%MAX;

   return x;

}

//建树=造根==》根分成两种情况1、空树 --- return NULL;2、非空树

//非空树= 造结点 + 给结点的所有域赋值

tree *create(){ int i;

   tree *t; char c=getchar();

   if(c=='#')return NULL; //输入'#',表示空

   //走至此处,表明是要创建非空树

   //非空树= 造结点 + 给结点的所有域赋值

   t=malloc(sizeof(tree));

   t->data=c;

   for(i=0; i<m; i++)

      t->c[i]=create();//create()表示创建一棵树,

      //t->c[i]=create();表示将新建的树交给t的孩子t->c[i]

   return t;

}

void pre(tree *t){ int i;

   if(t==NULL)return;

   printf("%c ",t->data);

   for(i=0; i<m; i++)

      pre(t->c[i]);

}

void post(tree *t){ int i;

   if(t==NULL)return;

   for(i=0; i<m; i++)

      post(t->c[i]);

   printf("%c ",t->data);

}

void level(tree *t){

   /* 层次遍历算法

      1、根入队;

      2、while(队不空){

         2.1、p=出队元素;

         2.2、打印p;

         2.3、p的所有非空孩子入队;

      }

   */

   int i; tree *p;

   Queue *q=malloc(sizeof(Queue));

   initQueue(q); enQueue(q,t);

   while( isEmpty(q)==0 ){

      p=outQueue(q);

      printf("%c ",p->data);

      for(i=0; i<m; i++)

         if(p->c[i]!=NULL)

            enQueue(q,p->c[i]);

   }

}

void  aoruOut(tree * t, int kg, int jh){

   int i;//kg:空格数,jh:#数

   if (t==NULL) return;

   /*下面四行输出根*/

   for(i=1; i<=kg; i++) printf("  ");

   printf("%c ",t->data);

   for(i=1; i<=jh; i++) printf("##");

   printf("\n");

   for(i=0; i<m; i++)//输出所有孩子

          aoruOut(t->c[i], kg+2, jh-2);

}

void kuohao(tree *t){int i;

   if (t==NULL) return;

   printf( "%c ", t->data );

   printf("( ");

   for(i=0; i<m; i++){

        kuohao(t->c[i]);

        printf(",");

   }

   printf(")");

}



main(){

   tree *t;

   printf("请输入建树数据,#表示NULL:");

   t=create();

   printf("\n pre: ");pre(t);

   printf("\npost: ");post(t);

   printf("\nlevel: ");level(t);

   printf("\naoru: \n");aoruOut(t,2,10);

   printf("\nkuohao: ");kuohao(t);

}

5.运行结果

6.实验总结(含心得体会)

通过这次实验,我理解了树的结构特征及各种储存方法,掌握了前序序列递归建树算法,掌握了树的前序、后序及层次遍历,设计并实现树结构相关问题算法。本次实验让我明白了要多做,多锻炼,才可以使自己的编程能力得到提高。

《数据结构与算法分析》课程实验报告六 图 本实验通过C++实现无向图和有向图的链式存储,内容包括:图的存储思想、创建、初始化及深度/广度优先遍历算法,实现并分析21种常见编译错误。使用Dev-Cpp和邻接表存储结构,定义ArcNode等结构体表示图。实验结果表明,图遍历操作正确,常见问题包括指针使用、内存管理和符号规范,解决方法包括指针初始化、动态内存释放和符号区分。实验加深了对图数据结构的理解。 阅读详情

相关推荐

【数据结构与算法】【C++】图的邻接表实验报告(六)

该实验旨在熟练掌握图的邻接表存储结构、基本操作算法和有向图的应用。实验内容包括邻接表类的定义、基本操作封装和拓扑排序。问题包括邻接表实现、遍历中的重复访问和死循环,以及增加/删除顶点和弧时的注意事项。解决方法包括递归深度优先遍历、队列广度优先遍历和无效输入处理。

鸿蒙初开 1520

数据结构实验报告六(排序实…

原文地址:数据结构实验报告六(排序实践)作者:我是Qq    数据结构与算法课程实验报告         实验六:排序实践                                                           姓名: 班级:                学号:                      实验六 排序实践 一.实验内容:     

程序化人生的随机事件 7144

避坑指南:解决‘Logical volume contains a filesystem in use’错误,顺利完成LVM根目录扩容

本文详细解析了Linux系统中LVM根目录扩容时遇到的‘Logical volume contains a filesystem in use’错误,提供了从错误诊断到实战解决方案的完整指南。通过动态扩容技术、单用户模式操作和LVM快照等方案,帮助管理员顺利完成根目录扩容,避免数据丢失和系统崩溃。

weixin_28702105的博客 227

数据结构实验报告六 排序

数据结构实验报告:实验六 排序

G_M_R_的博客 9188

检索生成(RAG) vs 长文本大模型:实际应用中如何选择?

大模型的上下文理解能力直接影响到 LLMs 在复杂任务和长对话中的表现。本期内容聚焦于两种主流技术:长上下文(Large Context Windows)和检索增强生成(RAG)。这两种技术各有何优势?在实际应用中,我们又该如何权衡选择?文章不仅详细阐述了这两种技术的工作原理,还深入分析了它们在效率、准确性和实施成本等方面的差异。文章特别提到了在执行重复性任务时使用 Context Caching 优化长上下文的优势,然而,缓存策略的效果很大程度上取决于提示词的可预测性。

2401_85782938的博客 1255

卡诺图化简法

目录 1.学前需要了解知识点 2.卡诺图(karnaugh map) 3.逻辑函数的卡诺图化简法 4.总结 1.学前需要了解知识点 最小项的定义 最小项的表示方法 最小项的相邻性 最小项的定义:一个函数的某个乘积项包含了函数的全部变量,其中每个变量都以原变量或反变量的形式出现,且仅出现一次,则这个乘积项称为该函数的一个标准积项,通常称为最小项。 最小项的表示方法:通常用来表...

hahasusu的专栏 17万+

桂电数据结构实验报告六

** 二叉检索树 ** 源代码的调试 #define MAXSIZE 100 #define NULL 0 #include<stdio.h> #include<stdlib.h> typedef int keytype; typedef int elemtype; typedef struct node { keytype key; /*关键字域*/ elemtype other;/*其他数据域*/ struct node *lchild,*rchild; /*左、右

qq_55810765的博客 1486

深入浅出ISP:用RKISP2.x Tuner工具理解AWB、AE、HDR等核心模块的实战调参

本文深入解析RKISP2.x Tuner工具在ISP图像处理中的实战应用,重点探讨AWB、AE、HDR等核心模块的调参技巧。通过环境搭建、调试工具使用和实际案例,帮助开发者掌握如何在不同光照条件下优化图像质量,实现精准的白平衡、曝光控制和动态范围处理。

weixin_26802933的博客 487

《数据结构》实验报告六:图的表示与遍历

《数据结构》实验报告:图的相关概念 + 深度/广度优先遍历算法 + 拓扑排序算法 + prim算法 + dijkstra算法

Amentos的博客 1万+

DSP在线升级方案:TMS320C6678使用网络或者串口输出升级数据进行固件升级

下面这段先引用创龙的说明 IBL 运行后, 将从 NOR FLASH 或 NAND FLASH 的 0x00080000 地址引导 ELF/BBLOB 格式 用户程序。 当引导 ELF 格式用户程序时, IBL 会解析用户程序头部信息,并根据头部信息 拷贝不同的代码段至指定 CPU 内存地址,然后将 PC 指针跳转至_c_int00, 再运行用户程 序。当引导 BBLOB 格式用户程序时,由于无头部信息, IBL 会将用户程序拷贝至 0x9E000000 (该内存地址为 IBL 代码指定),并将 PC..

ToneChip的专栏,一个传统的嵌入式码农,裸机编程 1942

Oracle11g下载与安装(windows)

一、Oracle11g下载 二、安装准备 三、执行安装步骤 四、测试连接 附:Oracle11g服务说明

欢迎订阅我的“JAVA全栈开发笔记(全)”专栏,价格优惠,仅需19.9元。 2万+

《数据结构》实验报告(六)之二叉树的相关操作

三种遍历算法的递归算法不同之处仅在于访问根结点和遍历左、右子树的先后关系,需要注意的是,任何一棵二叉树的叶子结点在先序,中序,后序遍历中,其访问的相对次序不变,包括双序遍历仅是在先序遍历的基础上,在访问右子树之前再次访问根结点;(1)由如图1所示的二叉树创建对应的二叉链存储结构b,该二叉树的括号表示串为“A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”;内容:编写一个程序,实现二叉树的先序遍历、中序遍历和后序遍历的递归算法,并对图1所示的二叉树b给出求解结果。

Li的博客 1726

X线DR医学图像 --- DR医用滤线栅及摩尔纹详解 (二) 摩尔纹的产生机理

1,横向摩尔纹的表现 2,纵向摩尔纹的表现 3,摩尔纹在pitch = 143μm(注:pitch为采样间隔/周期)的FPD上的表现。 4,摩尔纹的危害(严重的影响了临床诊断) 5,摩尔纹对胸片肺部肺纹理的破坏 6,滤线栅的频率(滤线栅生产厂家的产品参数)。判断摩尔纹产生的重要依据之一 7,DR平板探测器的采样频率/空间极限分辨率 l.........

松下J27录放机 4981

数据结构 实验六&七 图实验 实验报告(合肥工业大学 2023级)

数据结构 实验六&七 图实验 完整报告 合肥工业大学 2023级

Dulecam的博客 1294

STM32入门教程:智能储物柜控制

在这个例子中,我们将使用一个4x4的储物柜,共有16个储物格。我们了解了硬件准备、储物柜电路设计、STM32的基本配置、储物柜控制代码的编写以及测试和调试等方面的知识。根据我们的电路设计,我们需要将一些引脚配置为输出,并将其他引脚配置为输入。在本教程中,我们将使用STM32微控制器来实现一个基本的智能储物柜控制系统。在主函数中,我们将不断循环读取传感器数据,并根据数据的变化来控制储物柜的开关和显示相关信息。这个函数将读取人体感应传感器、温湿度传感器和光照传感器的数据,并将数据存储到相应的变量中。

m0_75244442的博客 662

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

数据结构实验报告-实验六-判断二叉树的同构和 2-d 树

实验六 判断二叉树的同构和 2-d 树 一、实验描述 1. 判断二叉树的同构:交换部分(或全部)节点的左右儿子后得到的树称为同构。请写出相应函数,判断两棵给定的树是否同构。 2. 2-d 树:2-d 树类似于二叉树,不同之处是在偶数层用 Key1 来分叉,奇数层用 Key2 来分叉。编写一个向一棵 2-d 树进行插入的例程,和一个打印同时满足 Low1<=Key1<=High1 ...

哆啦梦工厂的博客 1139

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

数据结构实验报告—顺序表的基本操作—学生管理系统

数据结构实验报告,顺序表的基本操作,学生管理系统

VLOKL的博客 8799

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

农夫过河【数据结构实验报告】

数据结构实验报告实验名称:实验三 农夫过河学号:***姓名:gnosed实验日期:2017.10.30 一、实验目的1、进一步掌握队列的使用2、会使用队列进行农夫过河解的搜索 二、实验具体内容1、实验题目1:(1)题目经典的农夫过河问题一个农夫带着一只狼,一只羊和一颗白菜过河,从西岸到东岸。船太小,他每次过河只能携带一样东西,船只有农夫能撑。问题是狼会吃羊,羊会吃白菜,所以不能单独让狼和羊或者羊和...

_ 1万+

数据结构实验报告(一)

数据结构实验报告(一) 一、实验名称 实验一  线性表的基本操作实现及其应用 二、实验目的 1、熟练掌握线性表的结构特点,掌握顺序表的基本操作。 2、巩固 C++相关的程序设计方法与技术。 3、学会使用顺序表解决实际问题。 三、实验内容 顺序表的建立与操作实现 建立 n 个元素的顺序表(n 的大小和表里数据自己确定),实现相关的操作:输出,插 入,删除,查找等功能。编写完整程序

cqc1161的博客 1万+

数据结构实验报告

《数据结构》实验指导书   实验一  线性表的应用 【实验目的】 1. 熟练掌握线性表的基本操作在顺序存储和链式存储上的实现; 2. 以线性表的各种操作(建立、插入、删除、遍历等)的实现为重点; 3. 掌握线性表的动态分配顺序存储结构的定义和基本操作的实现; 4. 通过本章实验帮助学生加深对C语言的使用(特别是函数的参数调用、指针类型的应用和链表的建立等各种基本操作)。 【实验内容

ESESZB的博客 2万+

数据结构实验报告---栈

上机实验习题 上机实验要求及规范 C程序设计具有比较强的理论性,同时也具有较强的可应用性和实践性。在上机实验是一个重要的教学环节。具体实习步骤如下: 1.问题分析与系统结构设计 充分地分析和理解问题本身,弄清要求做什么(而不是怎么做),限制条件是什么。按照以数据结构为中心的原则划分模块,搞清数据的逻辑结构(是线性表还是树、图?),确定数据的存储结构(是顺序结构还是链表结构?)。然后设计有关操作的函...

qq_41529435的博客 6888

数据结构第六次实验报告

7-1 高精度数加法 (100 分) 高精度数是指大大超出了标准数据类型能表示的范围的数,例如10000位整数。很多计算问题的结果都很大,因此,高精度数极其重要。 一般使用一个数组来存储高精度数的所有数位,数组中的每个元素存储该高精度数的1位数字或多位数字。 请尝试计算:N个高精度数的加和。这个任务对于在学习数据结构的你来说应该是小菜一碟。 。 输入格式: 第1行,1个整数N,表示高精度整数的个数,(1≤N≤10000)。 第2至N+1行,每行1个高精度整数x, x最多100位。 输出格式:

weixin_51753366的博客 296

数据结构实验报告,二叉树的基本操作(C语言)

数据结构实验报告,二叉树的基本操作(C语言)

VLOKL的博客 7517
上一篇: Java实验报告(八)
下一篇: 数据结构实验报告(八)
future_dreaming
博客等级 码龄5年 11粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值