[试题]

下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数fun()的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

include <stdio.h>

include <conio.h>

include <stdlib.h>

typedef struct aa

{ int data;

struct aa *next;

} NODE;

/*************found**************/

fun (NODE *h)

{ int max=-1;

NODE *p;

p=h->next;

while(p)

{ if(p->data>max)

max=p->data;

/*************found**************/

p=h->next;

}

return max;

}

outresult(int s, FILE *pf)

{ fprintf(pf, "/nThe max in link :%d/n

",s);}

NODE *creatlink(int n, int m)

{ NODE *h,*p,*s,*q;

int i, 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;

return h;

}

outlink(NODE *h,FILE *pf)

{ NODE *p;

p=h->next;

fprintf(pf, "/n The LIST :/n/n HEAD");

while(p)

{ fprintf(pf, "->%d",p->data);

p=p->next;}

fprintf(pf, "/n");

}

main ( )

{ NODE *head; int m;

clrscr();

head=creatlink(12,100);

outlink(head,stdout);

m=fun(head);

printf("/nThe RESULT :/n"); outresult(m, stdout);

}

参考答案与解析:

相关试题

给定程序中,函数fun的功能是将不带头节点的单向链表结点数据域中的数据从小到大排

[试题]给定程序中,函数fun的功能是将不带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:2、4、6、8、10。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!

  • 查看答案
  • 给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,

    [主观题]给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!

  • 查看答案
  • 以下程序中函数fun的功能是:构成—个如图所示的带头结点的单向链表,在结点的数据

    [主观题]以下程序中函数fun的功能是:构成—个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单向链表中所有结点中的字符串。请填空完成函数disp。include<stdio.h>typedef struct node /*链表结点结构*/{ char sub[3];struct node *next;}Node;Node fun(char s) /* 建立链表*/{ ...... }void disp(Node *h){ Node *p;p=h-

  • 查看答案
  • 函数 main() 的功能是 : 在带头结点的单链表中查找数据域中值最小的结点

    [试题]函数 main() 的功能是 : 在带头结点的单链表中查找数据域中值最小的结点 . 请填空#include <stdio.h>struct node{ int data;struct node *next;};int min(struct node *first)/* 指针 first 为链表头指针 */{ strct node *p; int m;p=first->next; m=p->data;p=p->next;for(;p!=NULL;p= _[20]____

  • 查看答案
  • 函数main()的功能是:在带头结点的单链表中查找数据域中值最小的结点.请填空

    [试题]函数main()的功能是:在带头结点的单链表中查找数据域中值最小的结点.请填空#include <stdio.h>struct node{ int data;struct node *next;};int min(struct node *first)/*指针first为链表头指针*/{ strct node *p; int m;p=first->next; m=p->data;p=p->next;for(;p!=NULL;p=_[20]_______)if(p-&g

  • 查看答案
  • 单向链表中往往含有一个头结点,该结点不存储数据元素,一般令链表的头指针指向该结点,而该结点指针域的值为第一个元素结点的指针。以下关于单链表头结点的叙述中,错误的是()。

    [单选题]单向链表中往往含有一个头结点,该结点不存储数据元素,一般令链表的头指针指向该结点,而该结点指针域的值为第一个元素结点的指针。以下关于单链表头结点的叙述

  • 查看答案
  • 单向链表中往往含有一个头结点,该结点不存储数据元素,一般令链表的头指针指向该结点,而该结点指针域的值为第一个元素结点的指针。以下关于单链表头结点的叙述中,错误的是()。

    [单选题]单向链表中往往含有一个头结点,该结点不存储数据元素,一般令链表的头指针指向该结点,而该结点指针域的值为第一个元素结点的指针。以下关于单链表头结点的叙述

  • 查看答案
  • 单向链表中往往含有一个头结点,该结点不存储数据元素,一般令链表的头指针指向该结点,而该结点指针域的值为第一个元素结点的指针。以下关于单链表头结点的叙述中,错误的是()。

    [单选题]单向链表中往往含有一个头结点,该结点不存储数据元素,一般令链表的头指针指向该结点,而该结点指针域的值为第一个元素结点的指针。以下关于单链表头结点的叙述

  • 查看答案
  • 编写算法,将一个头指针为head不带头结点的单链表改造为一个单向循环链表,并分析

    [问答题] 编写算法,将一个头指针为head不带头结点的单链表改造为一个单向循环链表,并分析算法的时间复杂度。

  • 查看答案
  • 设一个带头结点的单向链表的头指针为head,设计算法,将链表的记录,按照data

    [问答题] 设一个带头结点的单向链表的头指针为head,设计算法,将链表的记录,按照data域的值递增排序。

  • 查看答案
  • 下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数f