下列给定程序中,函数fun的功能是:在带头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回0值。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部

admin2020-10-26  25

问题 下列给定程序中,函数fun的功能是:在带头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回0值。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
  #include<stdio.h>
  #include<stdlib.h>
  #define N 8
  typedef struer liSt
  {  int data;
     struct list *next;
  }SLIST;
  SLIST*creatlist(char*);
  void outlist(SLIST*);
  int fun(SLIST*h,char ch)
  {  SLIST*P;    int n=0;
     P=h->next ;
    /*********found*********/
     while(p!=【1】)
    {  n++;
    /*********found*********/
      if(P->data==ch)
        return【2】
      else P=P->next;
    }
    return 0;
}
main()
{  SLIST*head;int k;char ch;char a[N]={’m’,’p’,’g’,’a’,’w’,’x’,’r’,’d’};
    head=creatlist(a);
    outliSt(head);
    printf("Enter a letter:");
    scanf("%c",&ch);
  /*********found*********/
  k=fun(【3】);
  if(k==0)
    printf("\nNot found!\n");
    else
    printf("The sequence number is:%d\n",k);
}
SLIST*creatlist(char*a)
{  SLIST*h,*p,*q;int i;
    h=p=(SLIST*)malloc(sizeof(SLIST));
    for(i=0;i<N;i++)
    { q=(SLIST*)malloc(sizeof(SLIST));
      q->data=a;P->next=q;
      p=q;
    }
    P->next=0;
    return h;
}
void outlist(SLIST*h)
{  SLIST*P;
    P=h->next;
    if(P==NULL)
    printf("\nThe list is NULL!\n");
    else
    {printf("\nHead");
     do
     { printf("->%C",
       p->data);p=p->next;}
    while(P!=NULL);
    printf("->End\n"”);
   }
}

选项

答案1)NULL (2)n (3)head,ch

解析 填空1:while循环语句用来判断是否到达链表结尾,链表结尾结点指针域是NULL。
填空2:若找到指定字符,则通过return语句将该结点在链表的顺序号返回给main函数。
填空3:函数调用语句,其形式是:函数名(实际参数表),因此根据函数定义语句,填入head,ch。
转载请注明原文地址:https://kaotiyun.com/show/XC3p777K
0

最新回复(0)