1、首先,在C语言软件中,定义多个整型变量,保存程序中所需操作的数值。
2、定义两个数组,保存输入的字符串和最长回文。
3、输入字符串,保存在变量a中。计算字符串的长度,设置变量k和max的初值。
4、接着,用循环语句实现查找回文,以及最长回文的判断。
5、用if语句判断回文是否偶数,如果条件成立执行以下语句。
6、最后运行程序,输入任一连续字符串,电脑就会判断其中的最长回文,并输出。
采用链栈实现算法,代码如下:
#include"stdio.h"
#include"stdlib.h"
typedef char ElemType;
typedef struct stnode
{
ElemType data;
struct stnode *next;
}StNode, *LinkStack;
int huiwen(char str[])
{
int i = 0;
char ch;
StNode *sl = NULL, *p;
while ((ch = str[i++]) != '\0')
{
p = (StNode *)malloc(sizeof(StNode));
p->data = ch;
p->next = sl;
sl = p;
}
i = 0;
while (sl != NULL)
{
p = sl;
ch = p->data;
sl = sl->next;
free(p);
if (ch != str[i++])
return 0;
}
return 1;
}
void main()
{
char string[20];
int hw;
printf("input a string:");
gets_s(string);
hw = huiwen(string);
if (hw) printf("The string is HUIWEN.");
else printf("The string is not HUIWEN.");
}
扩展资料
栈的特点是先进后出,而链表中的头插法正好满足我们的需求,因为头插法后面插入的节点位于链表的开头,所以我们可以使用头插法来插入节点,在弹出节点的时候弹出链表的第一个节点即可,而第一个节点是很容易找出来的,所以可以很轻松地实现栈的压入和弹出操作。
栈是一种是一种实现数据“先进后出”的存储结构,分为静态栈和动态栈,静态栈就是以数组的方式存储数据,动态栈是以链表的方式存储数据;对栈的操作算法,常用的就是压栈和出。
栈的创建:
在创建一个数据结构之前,必须知道这种数据结构由哪些参数组成,栈的本质既然是个链表,它必然由很多节点组成;为了实现“先进后出”这种数据结构,我们需要引进两个参数,一个是栈顶指针(pTop),始终指向栈顶元素。一个参数是栈底指针(pBottom),始终指向栈底元素。
我们知道为了方便描述链表的各种操作,引进了头节点的概念,即为每个链表前面加一个头节点,但并存放有效数据;同样,为了实现栈的操作,我们同样需要一个不存放任何有效数据的节点,并且栈底指针始终指向该节点。
c语言编程:判定一个字符是否是回文串(回文串是指从开头读和从末尾读均为相同字符的字符串,例如:abcba
我来答有奖励
love154139
LV.6 2018-04-05聊聊
#include
#include
void main()
{
char s[100],a[100];
int b,i,t;
printf("请输入字符串:");
scanf("%s",s);
b=strlen(s);
t=b;
i=0;
while(i!=t)
{
a[i]=s[b-1];
b--;
i++;
}
a[i]='\0';
if(!strcmp(s,a))
printf("这是回文串!\n");
else
printf("这不是回文串!\n");
}
bool symm(unsigned n)
{
unsigned i=n;
unsigned m=0;
while(i>0){
m=m*10+i%10;
i/=10;
}
return m==n;
}
int main()
{ int Val;
cin>>Val;//输入目标数字
bool Res=symm(Val);
cout<
}
通过除10取余反向读取数字判断
#include
#include
void main()
{
char s[100],a[100];
int b,i,t;
printf("请输入字符串:");
scanf("%s",s);
b=strlen(s);
t=b;
i=0;
while(i!=t)
{
a[i]=s[b-1];
b--;
i++;
}
a[i]='\0';
if(!strcmp(s,a))
printf("这是回文串!\n");
else
printf("这不是回文串!\n");
}