4.13实验 加测试题目

news2024/11/24 18:54:31

今天是个好日子,要搞栈的实验

没啥就是链栈和顺序栈

和出栈入栈,强大都是从最基本开始的

来和我一起写写吧

//顺序栈
typedef struct node{
    int *base;
    int *top;
    int sizer;
}shed;

//链栈
typedef struct Node{
int data;
struct Node* next;
}*stact,link;
//顺序栈的初始化

基本的模板 

接下来就是push和pop

//顺序栈的入栈
void push(shed &s,int e){


    if((s.top-s.base)!=s.sizer)
    *(s.top++)=e;
    else
        printf("栈满,操作无效");
}


//链栈的入栈
void pushs(stact &t,int i){

stact k=(stact)malloc(sizeof(stact));
 k->next=t->next;
 k->data=i;
 t->next=k;

}

一点不长但是就是脑袋要清晰一点 ,错了就要每个看一遍难受的要命

pop

//顺序栈的出栈
void pop(shed &s,int &a){

    if(s.base==s.top)
        printf("栈空操作无效");
    else
        a=*(--s.top);
}

//链表的出栈
void pops(stact t,int &e){

    if(t->next!=NULL){
    stact p=t->next;
    t->next=p->next;//头节点后第一个出去的
    e=p->data;
    free(p);
    }
}

细心永远不亏!!

接下来就是遍历输出

//链栈的展示
void shows(stact t){
stact p=t->next;
while(p!=NULL){
    printf("%d ",p->data);
    p=p->next;
}
printf("\n");
}




//顺序栈的输出展示
void show(shed &s){

    int* j=s.base;
    for(;j<s.top;j++)
    printf("%d ",*j);
    printf("\n");
}

没有写返回栈元素数目(实验的没要求) 

其他的要求都可以用这上面的函数拼成

写完有时间看看我测试没写完的题目了

FBI树

Description

我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。

FBI树是一种二叉树,它的结点类型也包括F结点,B结点和I结点三种。由一个长度为2^N的“01”串S可以构造出一棵FBI树T,递归的构造方法如下:

1)T的根结点为R,其类型与串S的类型相同;

2)若串S的长度大于1,将串S从中间分开,分为等长的左右子串S1和S2;由左子串S1构造R的左子树T1,由右子串S2构造R的右子树T2。

现在给定一个长度为2^n的“01”串,请用上述构造方法构造出一棵FBI树,并输出它的后序遍历序列。

Input

第一行是一个整数N(0  < =  N  < =  10),第二行是一个长度为2^N的“01”串。

数据规模和约定,对于全部的数据,N  < =  10。

注:
[1]  二叉树:二叉树是结点的有限集合,这个集合或为空集,或由一个根结点和两棵不相交的二叉树组成。这两棵不相交的二叉树分别称为这个根结点的左子树和右子树。
[2]  后序遍历:后序遍历是深度优先遍历二叉树的一种方法,它的递归定义是:先后序遍历左子树,再后序遍历右子树,最后访问根。

Output

包括一行,这一行只包含一个字符串,即FBI树的后序遍历序列。

Sample Input 1 

3 
10001011 

Sample Output 1

IBFBBBFIBFIIIFF

没错是线段树,很简单的线段树

本来想用之前的线段树的模板改成答案,发现连lazy数组都不要,简直太友好了,那就直接重大一遍

 关键就是对树的维护就不是加减乘除了,而是用字符判断了

#include<stdio.h>
#include<string.h>
char tree[5050];//开这末大是怕最后遍历的时候会下标越界
char a[1050];

void nerw(){
for(int j=1;j<=5050;j++){
    tree[j]='0';
}

}


void he(int p){//维护数组
  if(tree[2*p]=='F'||tree[2*p+1]=='F'){
    tree[p]='F';
  }
  else if(tree[2*p]=='I'&&tree[2*p+1]=='B'){
    tree[p]='F';
  }
  else if(tree[2*p]=='B'&&tree[2*p+1]=='I'){
    tree[p]='F';
  }
  else if(tree[2*p]=='B'&&tree[2*p+1]=='B'){
    tree[p]='B';
  }
  else if(tree[2*p]=='I'&&tree[2*p+1]=='I'){
    tree[p]='I';
  }

}

void builtree(int p,int x,int y){
if(x==y){
    if(a[x-1]=='0'){
        tree[p]='B';
    }
    else{
        tree[p]='I';
    }
}
else{
 int mid=(x+y)/2;
    builtree(2*p, x, mid);
    builtree(2*p+1, mid+1,y);
}
he(p);
}

void bianli(int p){
     if(tree[p]!='0'){
     bianli(2*p);
     bianli(2*p+1);
     printf("%c",tree[p]);
     }
     else{
        return ;
     }
}

int main(){
int n;
nerw();
scanf("%d",&n);
scanf("%s",a);
int l=strlen(a);
builtree(1,1,l);

bianli(1);


return 0;
}

通俗易懂,学过线段树的人一看就会

几天没写线段树,现在又相当于复习了哈哈

今天ok了

撒花谢幕!!!!!!

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/417869.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《绝对坦率》速读笔记

文章目录书籍信息概览&#xff08;第一部分 一种新的管理哲学&#xff09;建立坦率的关系给予并鼓励指导了解团队中每个人的动机协同创造成果&#xff08;第二部分 工具和技巧&#xff09;关系指导团队结果书籍信息 书名&#xff1a;《绝对坦率&#xff1a;一种新的管理哲学》…

北邮22信通:(12)二叉树的遍历书上代码完整版

北邮22信通一枚~ 跟随课程进度每周更新数据结构与算法的代码和文章 持续关注作者 解锁更多邮苑信通专属代码~ 上一篇文章&#xff1a; 下一篇文章&#xff1a; 目录 一.储存最简单数据类型的二叉树 代码部分&#xff1a; 代码效果&#xff1a; 运行结果&#xff1a…

解决JD-GUI-1.6.6 中文乱码

一、背景 在window环境下使用中遇到了乱码问题。 问题有两个&#xff1a; 一、从反编译代码的界面 CTRLC 复制是如果选中内容包含中文&#xff0c;贴到其他编辑器时&#xff0c;中文丢失。 二、打开xml文件、properties文件等包含中文时。中文在反编译界面中显示乱码。用其他工…

java反射教程

反射&#xff08;Reflection&#xff09;是 Java中的一种机制&#xff0c;它是一种特殊的面向对象编程技术。在 Java中&#xff0c;反射可以分为静态反射和动态反射两种。静态反射是指在 Java程序运行时才进行的一种反射&#xff0c;它可以保证程序运行时不会出现内存泄漏等错误…

数据分析的作用和意义?

数据分析的作用和意义&#xff1f;在当下数字化转型发展的大环境中&#xff0c;数据也成为企业商业成功与否的重要基础&#xff0c;如何利用好数据分析问题预测未来也成为更多企业面临的首要问题。而随时大数据的不断渗透&#xff0c;数据量和数据类型也越来越多&#xff0c;数…

asp.net车辆管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net车辆管理系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言开发 asp.net车辆管理系统VS开发sqlserver数…

【CSIG图像图形技术挑战赛-开放世界目标检测竞赛】火热报名中!

竞赛名称&#xff1a;开放世界目标检测竞赛/Few Shot&#xff09;主办方: 中国图象图形学学会&#xff08;CSIG&#xff09;合作方: 360集团竞赛目的与意义&#xff1a;目标检测是计算机视觉中的核心任务之一&#xff0c;主要目的是让计算机可以自动识别图片中目标的类别&#…

Windows File Recovery使用教程

Windows File Recovery简介 Windows File Recovery是微软在2020年发布的命令提示符文件恢复工具&#xff0c;它不仅具有高成功率和高安全性&#xff0c;还适用于不同的文件系统和文件丢失场景。如果你需要从本地硬盘、USB设备、SD卡等设备中恢复意外丢失或删除的JPEG、PDF、…

分析Spring事务管理原理及应用

目录 一、Spring事务管理介绍 &#xff08;一&#xff09;基本理论 &#xff08;二&#xff09;实际工作中的举例 &#xff08;三&#xff09;简单应用举例 二、Spring事务配置介绍 &#xff08;一&#xff09;Spring事务属性介绍 传播属性&#xff08;传播行为&#xff…

车身控制模块BCM(Body Control Module)

1.BCM概述 车身控制模块BCM是高集成度的芯片。BCM的英文全称是Body Control Module。其控制对象是采用高灵敏度带唤醒及睡眠检测的高频收发器&#xff0c;实现车门车窗遥控上锁与开锁、电动后视镜、中控门锁、玻璃升降装置、车灯(远光灯、近光灯、位置灯、制动灯、转向灯、雾灯…

【RocketMQ】主从模式下的消费进度管理

在【RocketMQ】消息的拉取一文中可知&#xff0c;消费者在启动的时候&#xff0c;会创建消息拉取API对象PullAPIWrapper&#xff0c;调用pullKernelImpl方法向Broker发送拉取消息的请求&#xff0c;那么在主从模式下消费者是如何选择向哪个Broker发送拉取请求的&#xff1f; 进…

【Linux】项目自动化构建工具-make/Makefile

文章目录1.make/Makefile的重要性2.规则及使用使用规则3.Makefile编译多文件1.make/Makefile的重要性 会不会写makefile&#xff0c;从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xf…

2023美赛春季赛Z题模型代码

已经完成模型代码&#xff0c;仅供大家参考&#xff0c;需要更多请看文末 一、问题分析 首先需要收集与奥运会举办城市/国家相关的历史数据。这需要涉及诸如经济、土地利用、人类满意度&#xff08;包括运动员和观众&#xff09;、旅行、基础设施建设、环境影响等多个方面。数…

(二)【软件设计师】计算机系统—CPU运算器控制器

文章目录一、CPU1.计算机硬件基本组成&#xff08;了解&#xff09;2.中央处理单元&#xff08;了解&#xff09;3.CPU组成4.例题二、运算器1.运算器有两个主要功能2.简要介绍运算器中各组成部件的功能三、控制器1.例题2.组成部分四、总结一、CPU 1.计算机硬件基本组成&#x…

让chatGPT当我的老师如何? 通过和chatGPT交互式学习,了解在ES中,一条JSON数据是如何写到磁盘上的

最近一直有一个问题&#xff0c;如鲠在喉。争取早一天解决&#xff0c;早一天踏踏实实的睡觉。 问题是&#xff1a;在ES中&#xff0c;一条JSON数据是如何写入到磁盘上的&#xff1f; 如何解决这个问题&#xff1f;我想到了chatGPT&#xff0c;还有lucene的学习资料。这篇文章&…

港科夜闻|香港科大(广州)创邻图数据联合实验室正式成立

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、香港科大(广州)创邻图数据联合实验室正式成立。未来&#xff0c;香港科大(广州)与「创邻科技」双方将围绕万亿级大图神经网络计算框架、海量数据的时序图处理、分布式原生图数据库事务及性能优化等前沿图技术领域研究展开深…

Cocos Creator的Hello World

0、文档 Cocos官网文档 1、下载 访问cocos官网下载Cocos Dashboard 安装时选项安装 Visual Studio 2017可以不勾选 注意&#xff1a;Cocos Dashboard的快捷方式文件名为CocosDashboard.exe&#xff0c;不要误认为是安装文件 2、注册、登录 注册/登录cocos网址 3、Cocos D…

深度学习之CD数据集创建

深度学习之数据集创建1. 原始文件相关文件路径2. 数据集创建2.1 数据格式一2.2 数据格式二1. 原始文件相关文件路径 原始路径 对于label图片文件&#xff0c;通道需要为单通道&#xff0c;如果不是单通道&#xff0c;训练数据会报错 报错信息例如&#xff1a;ValueError: Mask…

自然语言处理(八):Lexical Semantics

目录 1. Sentiment Analysis 2. Lexical Database 2.1 What is Lexical Database 2.2 Definitions 2.3 Meaning Through Dictionary 2.4 WordNet 2.5 Synsets 2.6 Hypernymy Chain 3. Word Similarity 3.1 Word Similarity with Paths 3.2 超越路径长度 3.3 Abstra…

波形失真总结

失真是输入信号与输出信号在幅度比例关系、相位关系及波形形状产生变化的现象。音频功放的失真分为电失真和声失真两大类。电失真是由电路引起的&#xff0c;声失真是由还音器件扬声器引起的。电失真的类型有&#xff1a;谐波失真、互调失真、瞬态失真。声失真主要是交流接口失…