首页 > 其他分享 >栈和队列实际应用对回文数字 各种树的学习

栈和队列实际应用对回文数字 各种树的学习

时间:2024-10-16 23:22:45浏览次数:8  
标签:return 数字 队列 int base front my rear 回文

在今天将PTA上的作业回文数的判断完成了,正好和我昨天进行的课本书写是一样的,具体代码如下:

include

include

define MAXSIZE 100

using namespace std;

typedef struct
{
int *base;
int *top;
int stacksize;
}SqStack;

void init_stack(SqStack &s)
{
s.base = new int[MAXSIZE];
if(!s.base) cout<<"ERROR!"<<endl;
s.top = s.base;
s.stacksize = MAXSIZE;
}

bool IsEmpty(SqStack &s)
{
if(s.top==s.base){
return 1;
}else {
return 0;
}
}

bool overflow(SqStack &s)
{
if(s.top - s.base == s.stacksize) return 1;
else return 0;
}

void Push(SqStack &s,int number)
{
if(overflow(s)) cout<<"栈已满无法入栈!";
else {
*s.top++ = number;
}
}

void Pop(SqStack &s)
{
if(IsEmpty(s)) cout<<"栈空,无法出栈!";
else {
s.top--;
}
}

int Get_top(SqStack &s)
{
if(!IsEmpty(s)) return *(s.top-1);
}

typedef struct
{
int *base;//队列的基地址
int front;
int rear;
}SqQueue;

void init_Queue(SqQueue &Q)
{
Q.base = new int[MAXSIZE];
if(!Q.base) cout<<"存储分配失败";
Q.rear = Q.front = 0;
}

int QueueLength(SqQueue &Q)
{
return (Q.rear-Q.front + MAXSIZE) % MAXSIZE;
}

void EnQueue(SqQueue &Q,int number)
{
if((Q.rear + 1) % MAXSIZE == Q.front) cout<<"队满,无法入队";
else{
Q.base[Q.rear] = number;
Q.rear = (Q.rear + 1) % MAXSIZE;
}
}

void DeQueue(SqQueue &Q)
{
if(Q.front==Q.rear) cout<<"队空,无法出队!";
else {
Q.front = (Q.front + 1)%MAXSIZE;
}
}

int GetHead(SqQueue &Q)
{
if(Q.front!=Q.rear){
return Q.base[Q.front];
}
}

bool QueueisEmpty(SqQueue &Q)
{
if(Q.rear==Q.front) return 1;
else {
return 0;
}
}
void check(int number)
{
SqStack my_stack;
init_stack(my_stack);//初始化
int temp = number;

SqQueue my_Queue;
init_Queue(my_Queue);

while(temp > 0){
    int x = temp%10;
    Push(my_stack,x);
    EnQueue(my_Queue,x);
    temp/=10;
}
while(!IsEmpty(my_stack)&&!QueueisEmpty(my_Queue)){
    if(Get_top(my_stack)!=GetHead(my_Queue)){
        cout<<"该字符串不是回文字符串"<<endl;
        return;
    }
    Pop(my_stack);
    DeQueue(my_Queue);
}
cout<<"该字符串是回文字符串"<<endl;

}

int main()
{
int number = 0;
string str;
getline(cin,str);
number = stoi(str);
check(number);
return 0;
}

然后我了解了树的相关知识,有完全树,还有满树,各种二叉树,还有三叉树,这种要记得东西感觉还有很多...

标签:return,数字,队列,int,base,front,my,rear,回文
From: https://www.cnblogs.com/wgsrjgc/p/18471149

相关文章

  • 05 线性结构——队列(特性、入队与出队、顺序队列和链式队列、顺序队列的“假溢出”问
    目录1队列的基本概念1.1定义1.2队列的组成部分1.3空队列1.4操作流程 1.4.1添加元素(入队)1.4.2删除元素(出队)2队列的存储结构2.1顺序队列2.2链式队列3 顺序队列中的“假溢出”问题及解决方案3.1问题描述3.2解决方案方法1:元素左移法方法2:循环队列4......
  • FreeRTOS:消息队列
    目录一、简介二、特点三、消息队列控制块四、相关API五、使用场景 一、简介        FreeRTOS的消息队列(MessageQueue)是任务之间通信的一种常用机制,允许任务或中断将数据发送到队列中,其他任务从队列中读取数据。        消息队列在嵌入式实时操作......
  • RabbitMQ系列学习笔记(三)--工作队列模式
    文章目录一、工作队列模式原理二、工作队列模式实战1、抽取工具类2、消费者代码3、生产者代码4、查看运行结果本文参考尚硅谷RabbitMQ教程丨快速掌握MQ消息中间件rabbitmqRabbitMQ详解Centos7环境安装Erlang、RabbitMQ详细过程(配图)一、工作队列模式原理与......
  • 数字农业与遥感监测平台
    随着全球人口的增长和气候变化的挑战,农业的可持续发展变得尤为重要。数字农业作为现代农业发展的重要方向,正逐渐成为提高农业生产效率、保障粮食安全的关键手段。遥感技术作为数字农业的重要组成部分,通过监测作物生长状况、土壤湿度、病虫害等信息,为农业生产提供了强有力的数据......
  • Linux多进程通信--管道、消息队列、共享内存
    转载至https://www.cnblogs.com/LUO77/p/5816326.html多进程:首先,先来讲一下fork之后,发生了什么事情。由fork创建的新进程被称为子进程(childprocess)。该函数被调用一次,但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值则是新进程(子进程)的进程id。将子进程id返......
  • 翔创科技与新疆察布查尔县联社达成战略合作,“智慧粮仓”助力农业产业数字化
    10月15日,人工智能技术新锐翔创科技与察布查尔县联社在新疆举行了“智慧粮仓”项目签约仪式。翔创科技凭借其领先的全产业链数字化平台及在金融、政府、农业等领域布局的丰富经验,为察布查尔县联社提供全链路的“智慧粮仓”战略服务。此次合作标志着察布查尔县在粮食产业现代化进程中......
  • P1307 [NOIP2011 普及组] 数字反转
    P1307[NOIP2011普及组]数字反转提交483.96k通过196.21k时间限制1.00s内存限制128.00MB提交答案加入题单做题计划(首页)个人题单团队题单保存题目提供者CCF_NOI难度入门历史分数0 提交记录  查看题解标签NOIp普及组2011 查看算法标签进入讨论版相关讨论......
  • 智慧工地:数字化管理提升施工安全与质量
     随着科技的发展,智慧工地已成为建筑行业转型升级的重要手段。依托智能感知设备和云物互联技术,智慧工地为工程管理带来了革命性的变革,实现了项目管理的简单化、远程化和智能化。一、核心架构企业级智慧工地采用1+N架构,以满足不同业务需求。工业级IOT平台,不仅保障了数据安全,......
  • 用do whlie与while分别计算数字的位数
     dowhile循环,先执行循环体,再判断条件,对于计算位数来说是合适的。用while循环计算时,根据本人写的代码,也可以计算出准确的位数。 甚至监视窗口也正常 然而,当打出首位数不是1的数字时,却生成不了结果。  该dowhile的写法却输出正常由此可知,dowhile写法正确。而w......
  • 怎么修改网站后台数字?网站后台怎么修改导航栏?
    要修改网站后台中的数字或导航栏,通常需要访问网站的内容管理系统(CMS)或者直接编辑网站的源代码。这里分为两个部分来说明:修改网站后台数字登录后台使用管理员账号登录到网站后台。定位到设置页面在后台管理界面找到相关设置选项,比如“系统设置”、“全局配置”或是特定......