• 2022-06-09
    下列给定程序中,是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数fun的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。请改正程序指定部位的错误,使它能得到正确结果。
    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
    /**********code.c**********/
    #include<stdio.h>
    #include<stdlib.h>
    typedefstructaa
    {
    intdata;
    structaa*next;
    }NODE;
    fun(NODE*h)
    {
    intmax=-1;
    NODE*p;
    /**********found**********/
    p=h;
    while(p)
    {
    if(p->data>max)
    max=p->data;
    /**********found**********/
    p=h->next;
    }
    returnmax;
    }
    outresult(ints,FILE*pf)
    {
    fprintf(pf,"\nThemaxinlink:%d\n",s);
    }
    NODE*creatlink(intn,intm)
    {
    NODE*h,*p,*s,*q;
    inti,x;
    h=p=(NODE*)malloc(sizeof(NODE));
    h->data=9999;
    for(i=1;i<=n;i++)
    {
    s=(NODE*)malloc(sizeof(NODE));
    s->data=rand()%m;
    s->next=p->next;
    p->next=s;
    p=p->next;
    }
    p->next=NULL;
    returnh;
    }

    outlink(NODE*h,FILE*pf)
    {
    NODE*p;
    p=h->next;
    fprintf(pf,"\nTHELIST:\n\nHEAD");
    while(p)
    {
    fprintf(pf,"->%d",p->data);
    p=p->next;
    }
    fprintf(pf,"\n");
    }
    main()
    {
    NODE*head;intm;
    head=creatlink(12,100);
    outlink(head,stdout);
    m=fun(head);
    printf("\nTHERESULT:\n");
    outresult(m,stdout);
    }
    /**********-code.c**********/
  • (1)错误:p=h;正确:p=h->next;(2)错误:p=h->next;正确:p=p->next;

    举一反三

    内容

    • 0

      在双向链表存储结构中,删除p所指的结点时须修改指针(<br/>)。 A: p-&gt;next-&gt;prior=p-&gt;prior;<br/>p-&gt;prior-&gt;next=p-&gt;next; B: p-&gt;next=p-&gt;next-&gt;next;<br/>p-&gt;next-&gt;prior=p; C: p-&gt;prior-&gt;next=p;<br/>p-&gt;prior=p-&gt;prior-&gt;prior; D: p-&gt;prior=p-&gt;next-&gt;next;<br/>p-&gt;next=p-&gt;prior-&gt;prior;

    • 1

      有一个化学反应,在低温下可自发进行,随温度的升高,自发倾向降低,这反应是:<br/>(<br/>) A: ∆S<br/>&gt; 0,∆H<br/>&gt; 0 B: ∆S<br/>&gt; 0,∆H C: ∆S<br/>&lt; 0,∆H<br/>&gt; 0 D: ∆S<br/>&lt; 0,∆H

    • 2

      算法设计:设计一个算法,通过一趟遍历在单链表中确定值最大的结点。[br][/br]&#91;算法描述&#93;[br][/br]DataType Max (LinkList *L )[br][/br]{[br][/br] if(L->next==NULL) [br][/br]return NULL;[br][/br] pmax=L->next; //假定第一个结点中数据具有最大值[br][/br]____空1____; [br][/br] while(p != NULL )[br][/br]{//如果下一个结点存在[br][/br] if(p->data > pmax->data) [br][/br]____空2____; //如果p的值大于pmax的值,则重新赋值[br][/br] p=p->next;//遍历链表[br][/br] }[br][/br] return pmax->data;[br][/br]}

    • 3

      有以下程序[br][/br]voidfun(intn,int*p)[br][/br]{intf1,f2;[br][/br]if(n==1||n==2)*p=1;[br][/br]else[br][/br]{fun(n-1,&f1);[br][/br]fun(n-2,&f2);[br][/br]*p=f1+f2;}[br][/br]}[br][/br]main()[br][/br]{ints;[br][/br]fun(3,&s);[br][/br]printf("%d\n",s);[br][/br]}[br][/br]程序的运行结果是(). A: 2 B: 3 C: 4 D: 5

    • 4

      小概率事件是指(<br/>) A: P≠0 B: P=1 C: P<br/>&gt;0.05 D: P<br/>≤0.05 E: P<br/>≥0.05