链表,设计一个算法判断其是否为回文结构

【问题描述】对于一个链表,设计一个算法判断其是否为回文结构。如果是请返回true,否则请返回false。

【输入形式】a b c # //输入以#结束
【输出形式】false //或者true
【样例输入】a #
【样例输出】true
【样例说明】
【评分标准】

大概思路是把输入的插入链表中。然后表头和表尾对比。第二个节点和倒数第二个节点对比。依次类推。


#include<iostream>
using namespace std;
typedef struct node
{
    char ch;
    struct node* next;
}link;
link* inlit(link*&b)
{
    link* a = (link*)malloc(sizeof(link));
    link* pre, * pt;
    pre = a;
    char h;
    cin >> h;
    while (h != '#')
    {
        pt = (link*)malloc(sizeof(link));
        pt->ch = h;
        pre->next = pt;
        pre = pt;
        link* s = (link*)malloc(sizeof(link));
        s->next = b->next;
        b->next = s;
        s->ch = h;
        cin >> h;
    }
    pre->next = NULL;
    return a;
}
int main()
{
    link* b = (link*)malloc(sizeof(link));
    b->next = NULL;
    link* a = inlit(b);
    link* pa = a->next;
    link* pb = b->next;
    int k = 0;
    while (pa != NULL)
    {
        if (pa->ch != pb->ch)
        {
            k = 1;
            break;
      }
        pa = pa->next;
        pb = pb->next;
    }
    if (k == 1)
        cout << "false";
    else
        cout << "true";

}