2022.10.02
不重要看图
编程要求
根据提示,在右侧编辑器补充代码,完成函数bool isPalindrome(LinkNode *L),该函数功能是判断链表是否为回文链表。如果是,返回 true ;否则,返回 false 。其中 L为不带附加头结点的单链表的头指针。
测试说明
平台会对你编写的代码进行测试:
测试输入:
1 2 2 1
预期输出:
YES
测试输入:
1 2
预期输出:
NO
提示:
开始你的任务吧,祝你成功!
C++代码
#include "linklist.h"
/**
* 判断链表是否为回文链表。如果是,返回 true ;否则,返回 false 。
* L为不带附加头结点的单链表的头指针。
*/
bool isPalindrome(LinkNode *L)
{
//请在下面编写代码
/******************Begin******************/
LinkNode *p=L;
int len=0;
int q[10001];
while(p)
{
len++;
q[len]=p->data;
p=p->next;
}
for(int i=1;i<=len/2;i++)
{
if(q[i]!=q[len-i+1])
return false;
}
return true;
/*******************End*******************/
}
//尾插法建立不带附加头结点的单链表
void CreateListR(LinkNode *&L, ElemType a[], int n)
{
LinkNode *s, *r;
L = (LinkNode *)malloc(sizeof(LinkNode)); //创建头结点
L->data = a[0];
L->next = NULL;
r = L; //r始终指向终端结点,开始时指向头结点
for (int i = 1; i < n; i++)
{
s = (LinkNode *)malloc(sizeof(LinkNode)); //创建新结点s
s->data = a[i];
r->next = s; //将结点s插入结点r之后
r = s;
}
r->next = NULL; //单链表收尾
}
//输出单链表
void DispList(LinkNode *L)
{
LinkNode *p = L;
while (p != NULL)
{
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}