gpt4 book ai didi

c - 链表的回文校验

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:39:51 24 4
gpt4 key购买 nike

这是我编写的代码,用于检查整数的单链表是否为回文。

#include<stdio.h>
#include<stdlib.h>
struct list
{
int data;
struct list *next;
};
struct list *insert(int data,struct list *node)
{
if(node==NULL)
{
node=(struct list *)malloc(sizeof(struct list));
node->data=data;
node->next=NULL;
}
else
{
struct list *newnode=(struct list *)malloc(sizeof(struct list));
newnode->data=data;
newnode->next=node;
node=newnode;
}
return node;
}

int palindrome(struct list *node,int n)
{
int i=0;int j=0;
int arr1[n],arr2[n];
struct list *current;
current=node;
while(current!=NULL)
{
arr1[i]=current->data;
i++;
current=current->next;
}
i=0;j=0;
for(i=n-1;i>=0;i--)
{
arr2[j]=arr1[i];
j++;
}
for(i=0;i<n;i++)
{
if(arr1[i]!=arr2[i])
{
return 0;
}
}
return 1;
}
void main()
{
int n;
scanf("%d",&n);
struct list *node=NULL;
int i=1;int value;
for(i=1;i<=n;i++)
{
scanf("%d",&value);
insert(value,node);
}
int status=palindrome(node,n);
printf("%d",status);
}

但即使在有效回文输入(如“121”)和非回文输入(如“154”)的情况下,代码也会返回 0。请帮忙。谢谢

最佳答案

你需要写

node = insert(value,node);

主要是。否则头节点不会改变,因为函数 insert 处理节点的副本。

关于c - 链表的回文校验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44969022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com