74人阅读 评论(0)

Given a singly linked list, determine if it is a palindrome.

Could you do it in O(n) time and O(1) space?

/**
* struct ListNode {
*     int val;
*     struct ListNode *next;
* };
*/
int i,j=0;
int* p=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++)                          //将链表的数据顺序存储
{
}
for(i=0;i<n/2;i++)                        //回文检测
{
if(*(p+i)==*(p+n-1-i))
j++;
else
break;
}
return j==n/2?true:false;
}
{
int length=1;
return 0;
{
length++;
}
return length;
}

/**
* struct ListNode {
*     int val;
*     struct ListNode *next;
* };
*/
int n,i,j=0;
struct ListNode *middle,*p,*s,*t;
middle=(struct ListNode*)malloc(sizeof(struct ListNode));
middle->val=9;
if(n<2)                                  //链表长度小于2
return true;
else if(n==2)
else if(n==3)
else
{
for(i=0;i<n/2-1;i++)                 //寻找中间节点前一个节点
p=p->next;
if(n%2==0)                           //偶数个节点
middle->next=p->next;
else
middle->next=p->next->next;
p->next=NULL;

/*后半部分链表反转*/
p=middle->next;
s=p->next;
p->next=NULL;
while(s)
{
t=s->next;
s->next=p;
p=s;
s=t;
}
middle->next=p;

/*回文判断*/
s=middle->next;
while(p!=NULL)
{
if(p->val==s->val)
{
p=p->next;
s=s->next;
j++;
}
else
break;
}
return j==n/2?true:false;
}
}

{
int length=1;
length=0;
else
{
length++;
}
return length;
}

/**
* struct ListNode {
*     int val;
*     struct ListNode *next;
* };
*/
int n,i,j=0;
struct ListNode *middle,*p,*s,*t;
if(n<2)                                   //链表长度小于2
return true;
else if(n==2)                             //链表长度等于2
else if(n==3)
else
{
for(i=0;i<n/2-1;i++)                  //寻找中间节点前一个节点
p=p->next;
middle=n%2==0?p->next:p->next->next;  //根据节点奇偶情况为middle指针
p->next=NULL;                         //前半链表最后一个节点next指向NULL

/*后半部分链表反转*/
p=middle;
s=p->next;
p->next=NULL;
while(s)
{
t=s->next;
s->next=p;
p=s;
s=t;
}
middle=p;                           //middle作为后半段链表的头指针

/*回文判断*/
s=middle;
while(p)
{
if(p->val==s->val)
{
p=p->next;
s=s->next;
j++;
}
else
break;
}
return j==n/2?true:false;
}
}

{
int length=1;
length=0;
else
{
length++;
}
return length;
}

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：12675次
• 积分：357
• 等级：
• 排名：千里之外
• 原创：24篇
• 转载：0篇
• 译文：0篇
• 评论：0条
文章分类
阅读排行