链表遍历(JSU-ZJJ)

题目描述

小T昨天很不爽
昨天路过体彩销售点买了2注生日号码玩,当晚开奖后……
小T号码: 8902088
中奖号码:3902888
一个号码不对就差了十几万……
小T想:为什么规则是那样玩的啊……为什么5个号码要连续才能中二等奖啊……
我自己创建个规则,开N个数字,只要数字位置对了不一定要连续就可以有奖。
现在有一个中奖号码,有一个兑奖号码,小T想知道一共有多少个数字位置正确的,N太大了……

要求用链表做

输入

输入数据第一行包含一个整数T表示有T组测试数据

对于每组测试数据

第一行包含一个整数N,表示有N个数字

第二行包含N个中奖号码

第三行包含N个兑奖号码

输出

对于每组测试数据输出有多少个号码位置正确了

样例输入

2
7
3902888
8902088
10
1234567890
0987654321

样例输出

5
0

分析:

还是对链表疏忽了, 这个题我卡了好久。一开始未能将结点中的int改为char导致一直错。

#include"stdio.h"
#include"string.h"
typedef struct a{
  char node;
  struct a *next;
}*LinkList,Node;
void CerateListTail(LinkList *L,int n)//创建一个链表
 {
     LinkList p,r;
     int i;
     *L=(LinkList)malloc(sizeof(Node));
     r=*L;
     for(i=0;i<n;i++)
     {
         p=(LinkList)malloc(sizeof(Node));
         scanf("%c",&(p->node));
         r->next=p;
         r=p;
     }
     r->next=NULL;
 }
 int main()
 {
     LinkList a,b,end;
     int m,n,T,count;
     char c;
     while(~scanf("%d",&T))
     {  //printf("T=%d\n",T);
        scanf("%c",&c);
         while(T--)
         {  count=0;
            scanf("%d",&m);
            scanf("%c",&c);
            CerateListTail(&a,m);
            scanf("%c",&c);
            CerateListTail(&b,m);
            scanf("%c",&c);

            a=a->next;
            b=b->next;
         while(a!=NULL)
         { // printf("a->node=%c\n",a->node);
            //printf("b->node=%c\n",b->node);
             if(a->node==b->node)
                count++;
             a=a->next;
             b=b->next;
         }

         printf("%d\n",count);
       }
     }
 }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值