题目描述
(线性表)已知一个单链表中每个结点存放一个整数,并且结点数不少于2,请设计算法以判断该链表中第二项起的每个元素值是否等于其序号的平方减去其前驱的值,若满足则返回ture,否则返回false.
输入
第一行为输入线性表的节点数N;
第二行为N个整数。
输出
true或者false;
样例输入
7
2 2 7 9 16 20 29
样例输出
true
采用C++方式提交
#include<stdio.h>
#include<stdlib.h>
typedef struct Lnode
{
int data;
struct Lnode *next;
}LinkNode;
void Init(LinkNode *&L)
{
L=(LinkNode *)malloc(sizeof(LinkNode));
L->next=NULL;
}
void Creat(LinkNode *&L,int n)
{
int i;
LinkNode *p,*r=L;
for(i=0;i<n;i++)
{
p=(LinkNode *)malloc(sizeof(LinkNode));
scanf("%d",&p->data);
r->next=p;
r=p;
}
r->next=NULL;
}
bool Check(LinkNode *L,int n)
{
int i=0,t;
LinkNode *p=L->next,*q=p->next;
for(i=1;i<n;i++)
{
if((i+1)*(i+1) - p->data != q->data)
return false;
p=p->next;
q=q->next;
}
if(i==n)
return true;
}
int main()
{
int n;
LinkNode *head;
scanf("%d",&n);
Init(head);
Creat(head,n);
if(Check(head,n))
printf("true\n");
else
printf("false\n");
system("pause");
return 0;
}