Advertisement

判断字符串是否回文

阅读量:

本题旨在实现对给定字符串S进行回文性判断。(即判断该字符串是否与其逆序完全一致)。同时要求采用堆分配存储结构。

复制代码
 #include<iostream>

    
 using namespace std;
    
 typedef enum{TRUE,FALSE}tag;
    
 typedef struct
    
 {//串的堆分配存储表示
    
 	char *base;//若是非空串,则按串长分配存储区,否则str为NULL
    
 	int length;//串的长度
    
 }HString;
    
 int IsInvert(HString str);//函数原型声明
    
 int main()
    
 {
    
 	HString str;
    
 	char ch[100];
    
 	cout<<"请输入字符串!"<<endl;
    
 	cin.getline(ch,100);//接收输入的字符串
    
 	for(int i=0;'\0' != ch[i];i++);//计算输入的字符串的长度
    
 	str.length=i;//为str的长度域赋值
    
 	str.base=(char *)malloc((str.length)*sizeof(char));//为str的base分配存储空间
    
 	strcpy(str.base,ch);//将ch数组中的字符串复制到str.base中
    
 	cout<<str.base<<endl;
    
 	IsInvert(str);//测试字符串是否回文
    
 	return 1;
    
 }
    
 int IsInvert(HString str)
    
 {//测试字符串是否回文
    
 	int i,n=str.length;
    
 	for(i=0;i<n/2;i++)
    
 		if(str.base[i] != str.base[n-i-1])
    
 		{
    
 			cout<<"该字符串不是回文!"<<endl;return FALSE;
    
 		}
    
 	cout<<"该字符串是回文!"<<endl;
    
 	return TRUE;
    
 }
    
    
    
    
    AI助手

全部评论 (0)

还没有任何评论哟~