不好意思又来麻烦大家了,链表有关问题
不好意思又来麻烦大家了,链表问题
该链表我想 输入好几个个字符串然后判断他们是不是回文
前面没问题主要是函数 huiwen那帮我看看问题出在哪 谢谢了 感激不尽
------解决方案--------------------
------解决方案--------------------
调用huiwen函数 应该是huiwen(p)
这个是重写的回文方法,你可以参考下
该链表我想 输入好几个个字符串然后判断他们是不是回文
前面没问题主要是函数 huiwen那帮我看看问题出在哪 谢谢了 感激不尽
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<string.h>
int i,l;
void huiwen(char *a);
int main(void)
{
struct zhifu
{
int no;
char chuan[80];
char chuan2[80];
char huiwen;
struct zhifu *next;
};
struct zhifu *first = NULL;
struct zhifu *ing = NULL;
struct zhifu *ing2=NULL;
struct zhifu *previous = NULL;
char test='\0';
for(;;)
{
printf("\n你想继续输入字符数组吗(Y or N)?");
scanf("%c",&test);
if(tolower(test)=='n')
break;
ing=(struct zhifu*)malloc(sizeof(struct zhifu));
if(first==NULL)
first =ing;
if(previous!=NULL)
previous->next=ing;
printf("\n这是第几次定义字符数组:");
scanf("%d",&ing->no);
printf("\n请定义第%d次字符数组:",ing->no);
scanf("%s",ing->chuan);
getchar();
ing->next=NULL;
previous=ing;
fflush(stdin);
}
for (ing = first; ing != NULL; ing = ing->next) {
printf("%d: %s\n", ing->no, ing->chuan);
}
ing=first;
while(ing!=NULL)
{
char *p = ing->chuan;
char *q = ing->chuan2;
huiwen(q);
ing=ing->next;
}
printf("\nafter modified:\n");
for (ing = first; ing != NULL; ing = ing->next) {
printf("%d: %s\n", ing->no, ing->chuan2);
}
return 0;
}
void huiwen(char *a)
{
for(;*a;a++)
{
l=i;
if(*a!=*(a+l))
{printf("\n不是回文");break;}
else
l=l-1;
}
printf("\n如果前面没有说不是回文,那么该数组为回文");
}
------解决方案--------------------
一个正读和反读都相同的字符序列称为“回文”。X例如“abcba”和“1221”是回文,而“abcde”不是回文。试写一个算法,利用栈的基本运算识别一个以@为结束符的字符序列是否是回文。
int Palindrome_Test(char str[ ])
/* 判别字符串str是否回文序列,是则返回1,否则返回0 */
{
InitStack(s); /*初始化栈s*/
for(i=0;str[i]!=’@’;i++)
Push(s,str[i]);
i=0;
while(!StackEmpty(s))
{
Pop(s,a);
if(a!=str[i++]) return 0;
}
return 1;
}
------解决方案--------------------
调用huiwen函数 应该是huiwen(p)
这个是重写的回文方法,你可以参考下
void huiwen(char *a)
{
printf("%s\n", a);