用C语言设计一个算法利用顺序栈判断是否为对称串
时间: 2024-10-11 17:03:24 浏览: 51
在C语言中,你可以通过创建两个栈,一个用于存储输入字符串的一半,另一个用于存储另一半,然后逐个比较它们对应位置的字符来判断一个字符串是否是对称的。下面是一个简单的示例算法:
```c
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#define MAX_SIZE 100
bool isPalindrome(char str[]) {
int len = strlen(str);
stack<char> halfStack;
// 将字符串的一半压入栈中
for (int i = 0; i < len / 2; i++) {
halfStack.push(str[i]);
}
// 比较另一半和栈顶元素是否相等
for (int i = len / 2; i < len; i++) {
if (halfStack.empty() || str[i] != halfStack.top()) {
return false;
}
halfStack.pop();
}
// 如果栈为空,则原字符串是对称的
return halfStack.empty();
}
int main() {
char test[] = "radar";
bool result = isPalindrome(test);
if (result) {
printf("'%s' is a palindrome.\n", test);
} else {
printf("'%s' is not a palindrome.\n", test);
}
return 0;
}
```
在这个算法中,我们首先将字符串的一半压入栈,然后从字符串的另一端开始取出并检查字符是否与栈顶的字符匹配。如果不匹配,说明不是对称串;如果完全匹配,直到栈空,那么就是对称串。
阅读全文