导航:首页 > 源码编译 > 数据结构编译以结束的回文数

数据结构编译以结束的回文数

发布时间:2022-09-03 01:37:49

Ⅰ 用数据结构的栈和队列 写 回文判断

用栈实现了判断回文数的操作,即把字符串依次入栈,然后出栈并依次和字符数组比较是否相等,从而判断字符序列是否回文数,代码如下:

#include"stdio.h"

#include"stdlib.h"

#include"string.h"

#defineEMPTY0

#defineFULL10000

#defineMAX10000

typedefchardata;

typedefstructelem{

datad;

structelem*next;

}elem;

typedefstructstack{

intcnt;

elem*top;

}stack;

voidinitialize(stack*stk);

voidpush(datad,stack*stk);

datapop(stack*stk);

boolempty(conststack*stk);

boolfull(conststack*stk);//栈操作函数

voidinitialize(stack*stk)

{

stk->cnt=0;

stk->top=NULL;

}

boolempty(conststack*stk)

{

returnstk->cnt==EMPTY;

}

boolfull(conststack*stk)

{

returnstk->cnt==FULL;

}

voidpush(datad,stack*stk)

{

elem*p;

if(!full(stk))

{

p=(elem*)malloc(sizeof(elem));

p->d=d;

p->next=stk->top;

stk->top=p;

stk->cnt++;

}

}

datapop(stack*stk)

{

datad;

elem*p;

if(!empty(stk))

{

d=stk->top->d;

p=stk->top;

stk->top=stk->top->next;

stk->cnt--;

free(p);

}

returnd;

}

intmain(void)

{

datainput[MAX];

stacktemp;

inti=0;

intflag=0;

initialize(&temp);//初始化临时栈

scanf("%s",&input);//输入字符串

while(input[i]!='@')

{//字符串入栈

push(input[i],&temp);

i++;

}

while(!empty(&temp))

{//字符依次出栈和字符数组比较,判断是否回文数

if(temp.top->d==input[flag])

{

pop(&temp);

flag++;

}

else

{

printf("此字符序列不是回文数! ");

break;

}

}

if(empty(&temp))

printf("此字符序列是回文数! ");

return1;

}

运行结果:

Ⅱ 用C语言编译数据结构的回文问题。。在线等。急

教你个简单的方法,不管是回文的字符串还是数字都可以用。
拿字符串举例:abccba,从前往后读是abccba,那从后往前读也是abccba,所以,将字符串逆转,如果和原字符串一样,那就是回文的,如果不一样,就不是回文的。
比你用栈和队列简单多了,用栈和队列还容易出错。
逆转字符串应该没问题吧,有问题的话继续M我。

Ⅲ 用PASCAL语言求回文数问题

ls显然错。。比如1122,按照你的操作顺序的话就是1进1出2进2出,最终也能得到空栈,但1122显然不是回文。。
这个是我写的程序,因为不知道数据范围,所以用了string,如果数据太大的话建议改成ansistring。。
var a:char; s1,s2:string;
begin
a:=#0;
while a<>'#' do
begin
read(a);
if a='#' then break;
s1:=s1+a; s2:=a+s2;
end;
if s1=s2 then writeln('It is a palin word') else writeln('It is not a palin word');
end.
这个程序就是比较正序和倒序是否相同,如果相同则为回文,否则不为回文。。
没编译过,直接在上面拍的,不过相信不会错吧。。

算法与数据结构实验:回文判断

#include<iostream>
using namespace std;
struct queue{
queue *front;
queue *rear;
queue *next;
char data;
};

#define maxsize 100;
#define T 10;

struct sqstack{
char *base;
char *top;
int stacksize;
};

sqstack inistack(sqstack &s){
s.base=new char [10];
if(!s.base) cout<<"error";
s.top=s.base;
s.stacksize=maxsize;
return s;
}

sqstack push(sqstack &s,char e){
if(s.top-s.base>=s.stacksize){
s.base=new char[10];
if(!s.base) cout<<"error";
s.top=s.base+s.stacksize;
s.stacksize+=T;
}
*s.top=e;
s.top++;
return s;
}

sqstack pop(sqstack &s, char e){
if(s.top==s.base)cout<<"error";
e=*s.top;
-- s.top;
return s;
}

queue iniqueue(queue &q){
q.front=q.rear=new queue;
if(!q.front) cout<<"error";
q.front->next=NULL;
return q;
}

queue inqueue(queue &q,char e){
queue *p;
p=new queue;
if(!p) cout<<"error";
p->data=e;
q.rear->next=p;
q.rear=p;
q.rear->next=NULL;
return q;
}

queue dlqueue(queue &q,char e){
queue* p;
p=new queue[10];
if(q.front==q.rear)cout<<"error";
else{
p=q.front->next;
e=p->data;
q.front->next=p->next;
if(q.rear==p)q.rear=q.front;
delete p;
}
return q;
}

char gethead(queue &q){
char e;
if(q.rear==q.front) cout<<"error";
else e=(q.front->next)->data;
return e;
}

char gettop(sqstack &s){
char e;
if(s.top==s.base){
cout<<"error";
}
e=*(s.top-1);
return e;
}

int main(){
int i;
sqstack s;
queue h;

char ch[5] ,x,y;
inistack(s);
iniqueue(h);

for(i=1;i<=5;i++){
cin>>ch[i];
push(s,ch[i]);
inqueue(h,ch[i]);
}

for(int j=1;j<=5;j++){
x=gettop(s);
y=gethead(h);
if(x!=y) cout<<"\tfalse\t"<<endl;
else cout<<"\tequal\t"<<endl;

pop(s,x);
dlqueue(h,y);
}

system("pause");
return 0;
}

Ⅳ 用栈和队列判断回文数(数据结构题)

#include<iostream> #include<stack> using namespace std; int main() { stack<char>S; int top,i; char q[100]; while(cin>>q) { top=-1; for(i=0;q[i]!='&';i++) { if(q[i]=='@') { cout<<"No"<<endl; break; } else { S.push(q[i]); ++top; } } if(q[i]!='@') { i++; while(q[i]!='@') { if(q[i]==S.top()&&q[i]!='&') { top--; S.pop(); i++; } else { cout<<"No"<<endl; break; } } if(top==-1&&q[i]=='@') cout<<"Yes"<<endl; } } return 0; }

Ⅵ C语言编回文数

#include <stdio.h>
#include <stdlib.h>

int huiwen(char *str) /* 回文子函数 */
{
int len=strlen(str);
int i=0;
for(i=0; i<len/2; i++) {
if(*(str+i) != *(str+len-1-i)) return 1;
}
return 0;
}
int main()
{
int i=0;
char str[5];
int hw6[10000] = {0};
int cnt=0;
int max=0;
printf("所有回文数:\n");
for(i=9999; i>=100; i--) {
memset(str, 0, 5);
sprintf(str, "%d", i);
if(huiwen(str) == 0) {
printf("%d\n", i); /* 这里把所有回文数打印出来 */
if(i % 6 == 0) {
hw6[cnt++] = i; /* 记录下被6整除的回文数 */
if(max == 0)
max = i; /* 最大被6整除的回文数,只会被执行一次 */
}
}
}
printf("能被6整除的回文数:\n");
for(i=0; i<cnt; i++) {
printf("%d\n", hw6[i]);
}
printf("最大回文数: %d\n",max);
}

Ⅶ C语言 关于判断回文数的程序

1、首先打开vc6.0,新建一个控制台项目,添加头文件。

Ⅷ 数据结构C语言版新手,请教啊~!

//---------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>

typedef struct ls{
char d;
struct ls *next;
} LS;

LS *push_back(LS *a,char c)
{
LS *t;
if (a==NULL) {
a=malloc(sizeof(LS));
a->d=c;
a->next =NULL;
//return a;
}
else
a->next=push_back(a->next ,c);
return a;
}
LS *fz(LS *a)
{
LS *m,*l=NULL;
while (a!=NULL)
{

m=a;
a=a->next ;
m->next=l;
l=m;

}
return m;
}

int main(void)
{
LS *a=NULL,*b=NULL;
int i;
char c;
for (c=getchar(); c!='\n'; c=getchar()) {
if (c!=' ') {
a=push_back(a,c);
b=push_back(b,c);
}
}

b=fz(b);
while (a!=NULL)
{
LS *t;
if (a->d!=b->d) {
break;
}
t=a;
a=a->next;
free(t);
t=b;
b=b->next ;
free(t);
}

if (a!=NULL) {
printf("非回文");
}
else printf("回文");

return 0;
}
//---------------------------------------------------------------------------

阅读全文

与数据结构编译以结束的回文数相关的资料

热点内容
在家如何创业python 浏览:222
编译原理好课 浏览:716
python中实数的表示 浏览:370
php下载中文名文件 浏览:348
哪里有专门注册app实名的 浏览:273
魔爪mx稳定器app去哪里下载 浏览:469
excel如何批量处理电话号码加密 浏览:324
ark命令 浏览:40
seal是不是对称密钥算法 浏览:29
免费学习的app在哪里下载 浏览:177
rfid与单片机 浏览:590
5s相当于安卓什么手机 浏览:690
哈佛商学院pdf 浏览:978
app的ip哪里买 浏览:909
移动天文台app在哪里下载 浏览:924
phpjsonencode乱码 浏览:587
t3的服务器名是什么几把 浏览:69
高中算法语句 浏览:549
安卓充电接头坏如何直接线 浏览:2
mcu编译成库 浏览:296