设单链表的表头指针为h,结点结构由data和next两个域构成,其中data域为字符型。写出算法dc(h,n),判断该链表的前n个字符是否中心对称
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
char data;
struct node *next;
}LinkNode,*LinkList;
LinkList initList();
LinkList createList(LinkList h);
int dc(LinkList h,int n);
void main()
{
int n,a;
scanf("%d",&n);
LinkList h;
h=initList();
createList(h);
a=dc(h,n);
if(a==0)
printf("No");
if(a==1)
printf("Yes");
}
int dc(LinkList h,int n)
{
LinkList p;
char s[10];
int i=1;
int j;
p=h->next;
for(i=1;i<=n/2;i++)
{
s[i]=p->data;
p=p->next;
}
s[i]='\0';
j=i-1;
if(n%2==1)
{
p=p->next;
}
for(i=j;i>0;i--)
{
if(p->data==s[i])
{
p=p->next;
}
else
break;
}
if(i!=0)
{
return 0;
}
else
{
return 1;
}
}
LinkList initList()
{
LinkList p;
p=(LinkList)malloc(sizeof(LinkNode));
p->next=NULL;
return p;
}
LinkList createList(LinkList h)
{
LinkList p,rear;
char a;
a='0';
rear=h; /*增加尾指针*/
while(a!=' ')
{
scanf("%c",&a);
p=(LinkList)malloc(sizeof(LinkNode));
p->data=a;
p->next=rear->next;
rear->next=p;
rear=p; /* 尾插结点*/
}
return h;
}
目前暂无任何回答
- 0 回答
- 0 关注
- 1114 浏览
添加回答
举报
0/150
提交
取消