如何检查回文列表

时间:2013-04-18 07:39:43

标签: c++

我想知道如何编写一个函数来确定从下面的代码读入的列表是否是回文?例如,如果说数字列表是123456,程序将打印出“此列表不是回文”,如果列表是12321,那么它将打印出“此列表是回文”。

任何帮助将不胜感激。

void popArray(int array1[]) {
    ifstream infile("TEST1.TXT");
    if (!infile) {
        cout << "Can't open file: " << endl;
        exit(EXIT_FAILURE);
    }
    for (int i = 0; i < 10; i++) {
        infile >> array1[i];
        cout << setw(2) << array1[i];
    }
}
void reverseList(int array1[]) {
    for (int x = 9; x > -1; x--) {
        cout << setw(2) << array1[x];
    }
}

3 个答案:

答案 0 :(得分:1)

我建议使用索引i并将其从0转到size/2。然后在循环内部比较list[i] == list[(size - 1) - i ]

答案 1 :(得分:0)

bool isPalindrome(int array1[], int size) {
    for (int i = 0, j = size - 1; i < j; ++i, --j)
        if (array1[i] != array1[j])
            return false;
    return true;
}

答案 2 :(得分:0)

你甚至可以这样尝试

for(i=0;i<(size/2);i++)
 if(b[i] - b[size-i] !=0 )
  break;

if(i<(size/2))
 cout<<"Not palindrome";
else
 cout<<"palindrome";

假设b是原始数组的临时副本