我有一个单链接列表.我想知道链接列表是否是Palindrome.我已经以下面的一种方式实现了它.
bool palindromeOrNot(node *head) {
node *tailPointer;
node *headLocal=head;
node *reverseList=reverseLinkedListIteratively(head);
int response=1;
while(headLocal != NULL && reverseList!=NULL) {
if(headLocal->id==reverseList->id) {
headLocal=headLocal->next;
reverseList=reverseList->next;
}
else
return false;
}
if(headLocal == NULL && reverseList==NULL)
return fasle;
else
return true;
}
Run Code Online (Sandbox Code Playgroud)
我正在反转原始链接列表,然后比较Node by Node.如果一切都很好,那么我将返回1,否则返回0.
有没有更好的算法来解决这个问题.
我在链接列表中定义了一个节点:
typedef struct abc
{
int id;
struct abc *next;
}node;
Run Code Online (Sandbox Code Playgroud)
我想以递归方式反转链接列表.我将头指针传递给函数.我的函数定义如下:
node *reverseLinkedListRecursively(node *head)
{
node *current;
node *rest;
if(head == NULL)
return head;
current=head;
rest=head->next;
if(rest == NULL)
{
return rest;
}
reverseLinkedListRecursively(rest);
current->next->next=rest;
current->next=NULL;
return rest;
}
Run Code Online (Sandbox Code Playgroud)
我该怎么办?我已经实现了迭代方法.
我想在二进制搜索树中找到最小值.我写了下面的代码.但是当我从main调用函数并且我返回值时,它总是打印为0.
请你帮忙.
int findMinimumValue(struct tnode* node)
{
int min=node->data;
if(node->lchild==NULL)
{
return min;
}
else
findMinimumValue(node->lchild);
}
Run Code Online (Sandbox Code Playgroud)