首页 > 其他分享 >回文(栈和队列两种方法实现)

回文(栈和队列两种方法实现)

时间:2024-10-14 21:49:32浏览次数:6  
标签:两种 return 队列 char int base str front 回文

include

include

using namespace std;

typedef struct {
char* base;
int front;
int rear;
}SqQueqe;

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

//初始化栈
void initStack(SqStack& s) {
s.base = new char[101];
s.top = s.base;
s.stacksize = 101;
}
//进栈
int Push1(SqStack& s, char c) {
if (s.top - s.base == 101)
return 0;
*s.top++ = c;
return 1;
}
//出栈
int Pop1(SqStack& s, char& c) {
if (s.top == s.base)
return 0;
c = *--s.top;
return 1;
}

//初始化队列
void initQueqe(SqQueqe& q) {
q.base = new char[101];
q.front = q.rear = 0;
}
//进队
int Push2(SqQueqe& q, char c) {
if ((q.rear + 1) % 101 == q.front)
return 0;
q.base[q.rear] = c;
q.rear = (q.rear + 1) % 101;
return 1;
}
//出队
int Pop2(SqQueqe& q, char& c) {
if (q.rear == q.front)
return 0;
c = q.base[q.front];
q.front = (q.front + 1) % 101;
return 1;
}

int main() {
string str;
getline(cin, str);
// for(int i=0;i<str.size();i++){
// if(str[i]==' '){
// str.erase(i,1);
// }
// }
//去掉字符串中的空格
int i = 0;
while (str[i] != '\0') {
if (str[i] == ' ') {
str.erase(i, 1);
i--;
}
i++;
}

char c1, c2;
int flag = 1;
//进栈
SqStack s;
initStack(s);
for (int i = 0; i < str.size(); i++) {
    Push1(s, str[i]);
}
//进队列
SqQueqe q;
initQueqe(q);
for (int i = 0; i < str.size(); i++) {
    Push2(q, str[i]);
}

for (int i = 0; i < str.size(); i++) {
    Pop1(s, c1);
    Pop2(q, c2);
    if (c1 != c2) {
        flag = 0;
        break;
    }
    
}
if (flag == 1)
    cout << "此字符串是回文串" << endl;
else cout << "此字符串不是回文串" << endl;

return 0;

}

标签:两种,return,队列,char,int,base,str,front,回文
From: https://www.cnblogs.com/wjhfree/p/18466245

相关文章

  • 代码随想录算法训练营第三十四天|134. 加油站 135. 分发糖果 860.柠檬水找零 406.根据
    134.加油站在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的......
  • 消息队列之RabbitMQ
    1.初识MQ在分布式微服务中,不同服务接口之间的调用分为同步调用和异步调用。使用同步调用有几种问题拓展性差性能差级联失败因此在大部分场景,我们使用的都是异步调用。异步调用方式其实就是基于消息通知的方式,一般包含三个角色:消息发送者:投递消息的人,就是调用方消息Bro......
  • 微服务02 Kafka消息队列, Dubbo, Springcloud微服务框架, Nacos
    3.6Kafka部署kafka下载链接http://kafka.apache.org/downloads#清华源https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/kafka版本格式kafka_<scala版本>_<kafka版本>#示例:kafka_2.13-2.7.0.tgz官方文档:http://kafka.apache.org/quickstart#二进制安装......
  • 【数据结构】学习笔记之栈和队列
    目录一、栈基本概念二、顺序栈2.1置空栈2.2判栈空2.3判栈满2.4进栈2.5退栈2.6取栈顶元素三、链栈3.1建栈3.2判栈空3.3进栈3.4退栈3.5取栈顶元素四、队列基本概念五、顺序队列5.1置队空5.2判队空5.3判队满5.4入队5.5出队5.6取队头元素......
  • 两种欧拉序的区别
    适用于\(O(1)\)LCA的欧拉序构造方法:dfs初次访问节点的时候的时候加入欧拉序,从某个子树访问完之后再次将该节点加入欧拉序。大小:初次会额外访问一次根节点,并且每条边都会给两个端点贡献一次,故为\(2n-1\)。性质:两个节点的LCA在欧拉序上处于两个节点之间(虽然一个点在欧拉序......
  • ZMQ消息队列 PUSH/PULL PUB/SUB REQ/REP
    1.REQ/REP客户端(Client)/服务器(Server)importorg.zeromq.ZContext;importorg.zeromq.ZMQ;/***@Description:(服务器)*@CreateTime:2024/3/2018:22*/publicclassServer{publicstaticvoidmain(String[]args)throwsInterruptedException{......
  • 有关数据结构线性结构(线性表、栈、队列)的创销增删改查
    #include<stdio.h>#include<iostream>#include<stdlib.h>#defineMaxSize50typedefintElemType;//1.静态顺序存储typedefstruct{   ElemTypedata[MaxSize];   intlength;}SqList;//1.1插入操作boolListInsert(SqList&L,inti,ElemTypee){......
  • 数据库管理类,数据库线程类(一些频繁操作可以放入队列执行)
    仅仅是一个示例,由chatgpt-3.5回答:  在开发ARM应用并与SQLite进行频繁的数据库操作时,从系统架构师的角度来看,合理封装和管理SQLite的操作至关重要,尤其是对于嵌入式环境,性能、资源限制以及并发安全性都需要重点考虑。以下是一些建议:###1.**数据库操作封装****封装成......
  • c语言栈-回文
    include<stdio.h>include<stdlib.h>defineMAXSIZE7//定义结构体structStack{charworld[MAXSIZE];inttop;};//定义栈structtemp{structStacks;};intmain(){Stacks{};//入栈charc1[MAXSIZE]={0};printf("输入字符串,最多%d个字符\n",MAXSI......
  • 相机曝光的两种模式
    相机的曝光模式相机帧率和曝光时间的关系相机的图像采集包括曝光(Exposure)和读出(Readout)两部分曝光又分为非重叠(non-overlapped)曝光和重叠(overlapped)曝光两种在非重叠(“non-overlapped”)模式中,每个图像采集的周期中,相机在下一个图像采集开始前,均要完成曝光/......