❶ c語言 字元迴文
/*1.假設稱正讀和反讀都相同的字元序列為"迴文",例如,"abcddcba"、 "qwerewq"是迴文,"ashgash"不是迴文。
是寫一個演算法判斷讀入的一個以'@'為結束符的字元序列是否為迴文。*/
#include<stdio.h>
#include<malloc.h>
#define MAXSIZE 100
typedef char DataType;
typedef struct{
DataType data[MAXSIZE];
int top;
}SeqStack,*PseqStack;//定義一個線性表棧。
typedef struct {
DataType data[MAXSIZE];
int front,rear;
}SeqQueue,*PseqQueue;//定義一個線性表隊。
PseqQueue Init_SeqQueue()
{
PseqQueue Q;
Q=(PseqQueue)malloc(sizeof(SeqQueue));
if(Q)
{
Q->front=0;
Q->rear=0;
}
return Q;
}//隊列初始化.
PseqStack Init_SeqStack(void)
{
PseqStack S;
S=(PseqStack)malloc(sizeof(SeqStack));
if(S)
S->top=-1;
return(S);
}//初始化棧。
int Push_SeqStack(PseqStack S,DataType x)
{
if(S->top==MAXSIZE-1)
return (0);
else
{
S->top++;
S->data[S->top]=x;
return (1);
}
}//入棧。
int Empty_SeqStack(PseqStack S)
{
if(S->top==-1)
return(1);
else return (0);
}//判斷是否棧空。
int Pop_SeqStack(PseqStack S,DataType *x)
{
if(Empty_SeqStack(S))
return (0);
else
{
*x=S->data[S->top];
S->top--;
return (1);
}
}//出棧。
int In_SeqQueue(PseqQueue Q,DataType x)
{
if((Q->rear+1)%MAXSIZE==Q->front)
{
printf("隊滿");
return (-1);
}
else
{
Q->rear=(Q->rear+1)%MAXSIZE;
Q->data[Q->rear]=x;
return 1;
}
}//入隊。
int Empty_SeqQueue(PseqQueue Q)
{
if(Q&&Q->front==Q->rear)
return 1;
else return 0;
}//判斷隊空。
int Out_SeqQueue(PseqQueue Q,DataType *x)
{
if(Empty_SeqQueue(Q))
{
printf("隊空");
return (-1);
}
else
{
Q->front=(Q->front+1)%MAXSIZE;
*x=Q->data[Q->front];
return 1;
}
}//出隊。
int huiwen(char *ch)
{
char x,y;
int count;
PseqStack S;
PseqQueue Q;
S=Init_SeqStack();
Q=Init_SeqQueue();
while(*ch!='\0')
{
Push_SeqStack(S,*ch);
In_SeqQueue(Q,*ch);
ch++;
}
count=1;
while(!Empty_SeqStack(S)&&!Empty_SeqQueue(Q))
{
Pop_SeqStack(S,&x);
Out_SeqQueue(Q,&y);
if(x!=y)
{
count=0;
break;
}
}
if(count)
{
printf("是迴文。\n");
return 1;
}
else
{
printf("不是迴文。\n");
return 0;
}
}//主演算法。
void main()
{
char ch[MAXSIZE];
printf("輸入一個符串:");
gets(ch);
huiwen(ch);
}//主函數。
❷ c語言編程:判定一個字元是否是迴文串(迴文串是指從開頭讀和從末尾讀均為相同字元的字元串,例如:abcba
1、首先,在C語言軟體中,定義多個整型變數,保存程序中所需操作的數值。