内存:128  时间:1

题目描述

(线性表)设单链表的表头指针为h,结点结构由data和next两个域构成,其中data域为字符型。写出算法dc(h,n),判断该链表的前n个字符是否中心对称

输入

第1行为n,第二行为字符串


输出

对称输出Yes,否则输出No。

样例输入

3
2323443

样例输出

Yes

提示

代码如下

#include<stdio.h>
typedef struct Lnode
{
    char data;
    struct Lnode *next;
}listlink;
int n;

listlink *creat()
{
    char m;
    listlink *s,*r,*h;
    h=(listlink *)malloc(sizeof(listlink));
    r=h;
    while(scanf("%c",&m)!=EOF&&m!='\n')
    {
        s=(listlink *)malloc(sizeof(listlink));
        s->data=m;
        r->next=s;
        r=s;
    }
    r->next=NULL;
    return h;
}

void dc(listlink *h,int n)
{
    listlink *r,*r1,*s,*h1;
    h1=(listlink *)malloc(sizeof(listlink));
    r=h->next;
    int i=1;
    while(i<=n)
    {
        s=(listlink *)malloc(sizeof(listlink));
        s->data=r->data;
        r=r->next;
        s->next=h1->next;
        h1->next=s;
        i++;
    }
    i=1;
    r1=h1->next;
    r=h->next;
    while(i<=n)
    {
        if(r1->data!=r->data)
        {
            printf("No\n");
            return ;
        }
        else
        {
            r=r->next;
            r1=r1->next;
        }
        i++;
    }
    printf("Yes\n");
}
int main()
{
    scanf("%d",&n);
    listlink *h;
    getchar();
    h=creat();
    dc(h,n);
    return 0;
}

代码来源于互联网,仅供参考!