帮忙编写一个算法2
发布网友
发布时间:2023-10-19 20:14
我来回答
共3个回答
热心网友
时间:2024-11-15 18:55
#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main()
{
char a[100];
int i,j;
stack<char>aa;
scanf("%s",a);
getchar();
i=strlen(a)/2;
for(j=1;j<=i;j++)
aa.push(a[j-1]);
if(strlen(a)%2==0)
for(j=i+1;j<=strlen(a);j++)
{
if(aa.top()==a[j-1])
aa.pop();
else
break;
}
if(aa.size()==0)
printf("是回文数");
else
printf("不是会文数");
getchar();
return 0;
}
这是C语言写的,就是头文件用的是C++的,因为在C语言里面不能直接用栈,建议你学习一下C++的输入输出函数,以及用的头文件,很简单,大约五分钟就可以学会了!希望对你有帮助!呵呵
热心网友
时间:2024-11-15 18:55
实现逆转的函数为void ReverseQueue(),其他的都是辅助测试所用。
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#include "math.h"
#define MAX 10
struct Queue
{
int front;
int rear;
int a[MAX];
}Que;
void Initial();
int InsertQueue(int n);
int DeleQueue();
void ReverseQueue();
void PrintQ();
//该函数是为了测试逆转函数的正确性
void TestFun();
int main()
{
Initial();
TestFun();
return 0;
}
void Initial()
{
Que.front=0;
Que.rear=0;
for (int i=0; i<MAX; i++)
{
Que.a[i] = 0;
}
}
int InsertQueue(int n)
{
if ( (Que.rear+1)%MAX == Que.front )
{
return 0;
}
Que.a[Que.rear] = n;
Que.rear = (Que.rear+1)%MAX;
return 1;
}
int DeleQueue()
{
if (Que.rear == Que.front)
{
return 0;
}
int temp;
temp = Que.a[Que.front];
Que.front++;
return temp;
}
void ReverseQueue()
{
int len;
len = (Que.rear-Que.front+MAX)%MAX;//total number in the queue
int start,end;
start = Que.front;
end = (Que.front+(len-1))%MAX;//the last number's index
int temp=0;
for (int i=0; i<len/2; i++)
{
temp = Que.a[end];
Que.a[end] = Que.a[start];
Que.a[start] = temp;
start = (start+1)%MAX;
end = (end-1+MAX)%MAX;
}
}
void PrintQ()
{
printf("\n");
int len = (Que.rear-Que.front+MAX)%MAX;
int k=Que.front;
for (int i=Que.front; i<Que.front+len; i++)
{
printf("%d ",Que.a[k]);
k = (k+1)%MAX;
}
}
//该函数是为了测试逆转函数的正确性
void TestFun()
{
int i=0;
for (i=0; i<MAX; i++)
{
if (InsertQueue(i) == 0)
{
printf("\nQueue is full!");
break;
}
}
PrintQ();
for (i=0; i<MAX/2; i++)
{
DeleQueue();
}
printf("\nAfeter delete %d number in the queue",MAX/2);
PrintQ();
ReverseQueue();
printf("\nReverse ==>");
PrintQ();
for (i=0; i<MAX/2; i++)
{
InsertQueue(i*8);
}
printf("\nAfter insert %d number in the queue",MAX/2);
PrintQ();
ReverseQueue();
printf("\nReverse ==>");
PrintQ();
printf("\n");
}
热心网友
时间:2024-11-15 18:56
你都没说什么语言
bool IsHuiWen(char[] str)
{
int len=strlen(str);
int i=0;
int j=len-1;
while(i<j)
{
if(str[i]!=str[j])
break;
i++;
j--;
}
if(i<j) return FALSE;
else return TURE;
}