gpt4 book ai didi

c++ - 检查链表是否为回文

转载 作者:搜寻专家 更新时间:2023-10-31 02:22:10 24 4
gpt4 key购买 nike

我正在编写一个程序来检查单向链表是否为回文。我正在使用通过迭代反转的概念。

我在链表中​​插入了2,3,5,3,2并进行了逆向,本着这样的思路,如果逆向后得到的链表与逆向前相同,那么就是回文。但是我无法用匹配语句结束程序。我怎样才能匹配这两个列表?

这是我的代码:

struct Node{
int data;
Node* next;
};
Node*head;

void Insert(int x)
{
Node*temp=new Node();
temp->data=x;
temp->next=head;
head=temp;
}

void print()
{
Node*temp=head;
cout<<"list is";
while(temp!=NULL)
{
cout<<temp->data;
temp=temp->next;
}
}

void rec()
{
Node*current, *prev, *next;
current=head;
prev=NULL;
while(current!=NULL)
{
next= current->next;
current->next= prev;
prev= current;
current=next;
}
head=prev;
}

int main()
{
clrscr();
Node*head=NULL;
Insert(2);
Insert(3);
Insert(5);
Insert(3);
Insert(2);
cout<<"list before reversing is\n";
print();

cout<<"\n";
cout<<"list after reversing is \n";
rec();
print();

getch();
}

最佳答案

代替单独的反转函数,有一个函数来检查是否回文。在该函数中反转列表并存储在临时列表中。然后迭代比较每个node->data。如果所有匹配则它的回文否则你跳出循环并设置为 false。

关于c++ - 检查链表是否为回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30619686/

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