题目详情
当前位置:首页 > 职业培训考试
题目详情:
发布时间:2023-10-22 17:24:16

[简答题]设有一个带头结点的循环单链表,其结点值均为正整数。试设计一个算法,反复找出单链表中结点值最小的结点,并输出之,然后将该结点从中删除,直到单链表空为止,最后再删除表头结点。

更多"设有一个带头结点的循环单链表,其结点值均为正整数。试设计一个算法,反复"的相关试题:

[简答题]

设有一个由正整数组成的无序(后向)单链表,编写能够完成下列功能的算法:
(1) 找出最小值结点,且打印该数值。
(2) 若该数值为奇数,则将其与直接后继结点的数值交换。
(3) 若该数值为偶数,则将其直接后继结点删除。


[填空题]给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数fun的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
文件MODI1.C内容如下:
#include<stdio.h>
#include<stdlib.h>
typedef struet aa
int data;
struet aa *next;
NODE;
int fun( NODE *h)
int max=-1:
NODE *p;
/**********found**********/
p=h;
while(p)t
if(p->data>max)max=p->data;
/**********found**********/
p=h->next;

return max;

void outresult(int s,FILE *pf)fprintf(pf,"/nThe max in link: %d/n",s);
NODE *creatlink(int n,int m)
NODE *h,*p,*s;
int i;
h=p=(NODE *)malloc(sizeof(NODE));
h->data=9999;
for(i=1;i<=n;i++)
S=(NODE$)malloe(sizeof(NODE));
s->data=rand( )%m;
s->next=p->next;
p->next=s;
p=p->next;

p->next=NULL;
return h;

void outlink(NODE *h,FILE *pf)
NODE *p;
p=h->next;
fprintf(pf,"/nTHE LIST: /n/n
[填空题]已知bead指向一个带头结点的单向链表,链表中每个结点包含数据域(data)和指针域(next),数据域为整型。以下函数求出链表中所有连接点数据域的和值作为函数值返回。请在横线处填入正确内容。
int data; struct link *next;
main( )
struct link *head;
sam(______);
stmct link *p;int s=0;
p=head->next;
while(p)s+=p->data;p=p->next;
return(s);
[填空题]下面程序中函数creat用于建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾,单向链表的头指针作为函数值返回。将程序补充完整。
#include<stdiao.h>
struct list
char data; struct list * next;;
struct list * creat( )

struct list *h,*p,*q; char ch;
h= 【18】 malloc(sizeof(struct list));
p=q=h;ch=getchar( );
while(ch!=’’)

p= 【19】 malloc(sizeof(struct list));
p->data=ch;q->next=p;q=p;ch=getchar( );

p->next=’/0’;
【20】

[填空题]以下函数creat用来建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾。单向链表的头指针作为函数值返回。请填空。 #include <stdio.h> struct list { char dara; struct list *next; }; struct list *creat( ) { struct list *h,*p,*q; char ch; h= (struct list (*) malloc (sizeof (struct list)); ______; ch=getchar( ); while(ch!=’’) { p=(struct list*) malloc) sizeof (struct list)); p->data=ch; ______; q=p; ch=getchar( ); } p->next=’/0’; ______: }
[填空题]下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数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;
[填空题]以下函数creat用来建立一个带头结点的单向链表,新产生的结点是插在链表头的
末尾。单向链表的头指针作为函数值返回。请填空。
# include<stdio.h>
struct list
char data;
struct list * next;

struct list * creat;
struct list * h,* p,* q;
char ch;
h=(______)malloc ( sizeof(struct list));
p=q=h;
ch=getchar( );
while(ch!=’’)
p=(______)mallco(sizeof(struct list));
p->data=ch;
q->next=p;
q=p;
ch=getchar( );

p->next=’/0’;
______;

[简答题]

下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun( )的功能是:将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并作为函数值返回。
其累加和通过函数值返回main( )函数。例如,若n=5,则应输出8.391667。
请改正程序中的错误,使它能得到正确结果。
[注意] 不要改动main函数,不得增行或删行,也不得更改程序的结构。
[试题源程序]
#include<stdio.h>
#include<stdiib.h>
typedef struct aa

int data;
struct aa *next;
NODE;
int fun(NODE *h)

int sum=0;
NODE *P;
/**********found**********/
p=h;
while(P->next)

if(p->data%2==0)
sum+=p->data;
/**********found**********/
p=h->next;

return sum;

NODE *creatlink(int n)

NODE *h, *p, *s, *q;
int i, x;
h=p=(NODE *)malloc(si zeof(NODE));
for(i=1; i<=n; i++)

s=(NODE *)malloc(sizeof(NODE));
s->data=rand( )%16;
s->next=p->next;
p->next=s;
p=p->next;

p->next=NULL;
return h;

outlink(NODE *h, FILE *Pf)


[简答题]下列给定程序中,是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数fun的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。
请改正程序指定部位的错误,使它能得到正确结果。
[注意] 不要改动main函数,不得增行或删行,也不得更改程序的结构。
[试题源程序]
#include<stdio.h>
#include<stdlib.h>
typedef struct aa

int data;
struct aa *next;
NODE;
fun(NODE *h)

int max=-1;
NODE *p;
/***********found************/
p=h;
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)

[简答题]M名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点。请编写函数proc( ),它的功能是:找出学生的最高分,由函数值返回。
注意:部分源程序已给出。
请勿改动主函数main和其他函数中的任何内容。
试题程序:
#include<stdio.h>
#include<stdlib.h>
#define M 8
struet slist
double s;
struct slist * next;
;
typedef struct slist STREC;
double proc(STREC * h)


STREC*treat(double*s)

STREC *h, *p, *q;
int i=0;
h=p=(STREC*)malloc(sizeof(STREC));
p->s=0;
while(i<M)
/产生8个结点的链表,各分数存入链表中
q=(STREC*)malloc(sizeof(STREC));
p->s=se[i]; i++; p->next=q; p=q;

p->next=NULL;
return h; //返回链表的首地址

void outlist(STREC*h)

STREC *p;
p=h;
printf("head");
do

printf("->%2.Of", p->s); p=p->next;
//输出各分数
while(p->next! =NULL);
printf("n/n");

void main( )

double stu[M]=60, 70, 80, 90, 65, 75, 85, 95,
max;
STREC *h;
h=creat(stu);
outlist(h);
max=proc(h);
printf
[简答题]N名学生的成绩已在主函数中放人一个带头结点的链表结构中,h指向链表的头结点。请编写函数fun,其功能是:求出平均分,并由函数值返回。
例如,若学生的成绩是:85,76,69,85,9l,72,64,87,则平均分应当是:78625。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若千语句。
试题程序:
#include<stdlib.h>
#include<stdio.h>
#define N 8
struct slist

double s;
struct slist*next;
;
typedef struct slist STREC;
double fun(STREC*h)


STREC*creat(double*s) /*创建链表*/

STREC*h,*p,*q;
int i=0;
h=P=(STREC*)mallocsizeof(STREC));
P->s=0;
whilel(i<N)

q=(STREC*)mallodsizeof(STREC));
q->s=s[i];i++lp->next=q;P=q;

p->next=0;
return h;

ouclist(STREC*h)

STREC*p;
P=h->next;
printf("head");
do

printf("->%4.1f",p->s);
P=P->next;/*输出各成绩*/
while(p!=NULL);
printf("/n/n");

void main( )

double s[N]=85,76,69,85,91,72,64,87,ave;
STREC*h;
h=creat(s);outlist(h);
ave=fun(h);

[简答题]N名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点。请编写函数fun,其功能是:求出平均分,并由函数值返回。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序
#include <stdlib.h>
#include <stdio.h>
#define N 8
struct slist

double s;
struct slist * next;
;
typedef struct slist STREC;
double fun(STREC * h)



STREC * creat (double * s) /*创建链表* /

STREC * h, * p, * q;
int i=0;
h=p=(STREC*) malloc (sizeof
(STREC));
p->s=0;
while (i<N)

q=(STREC *)malloc (sizeof
(STREC));
q->s=s[i]; i++; p->next=q; p=q;

p->next=0;
return h;

outlist (STREC * h)

STREC * p;
p=h->next;
printf ("head ");
do

printf("->% 4.1f ", p->s);
p=p->next; /*输出成绩* /
while (p !=NULL);
printf ("/n/n");

void main ( )

double s[N]=85, 76, 69, 85, 91, 72, 64, 87 , ave;
STREC
[填空题]【说明2.1】
L为一个带头结点的循环链表。函数deletenode(LinkList L, int c)的功能是删除L中数据域data的值大于c的所有结点,并由这些结点组建成一个新的带头结点的循环链表,其头指针作为函数的返回值。
【函数2.1】
LinkList deletenode(LinkList L, int c)
    
LinkList Lc,p,pre;
pre=L;
p= (1) ;
Lc=(LinkList)malloc(sizeof(ListNode) );
Lc->next=Lc
while(p!=L)
if(p->data>c)

(2) ;
(3) ;
Lc->next=p;
p=pre->next;
    
else

pre=p;
p=pre->next;

return Lc;

【说明2.2】
递归函数dec_to_k_2(int n, int k)的功能是将十进制正整数n转换成k<2≤k≤9)进制数,并打印。
【函数2.2】
dec_to_k_2(int n, int k)
/*将十进制正整数n转换成k(2≤k≤9)进制数*/
if(n!=0)

dec_to_k_2( (4) ,k);
printf("%d", (5) );


[填空题]【说明2.1】 L为一个带头结点的循环链表。函数deletenode(LinkList L, int c)的功能是删除L中数据域data的值大于c的所有结点,并由这些结点组建成一个新的带头结点的循环链表,其头指针作为函数的返回值。 【函数2.1】 LinkList deletenode(LinkList L, int c)   {   LinkList Lc,p,pre; pre=L; p= (1) ; Lc=(LinkList)malloc(sizeof(ListNode) ); Lc->next=Lc while(p!=L) if(p->data>c) { (2) ; (3) ; Lc->next=p; p=pre->next;     } else { pre=p; p=pre->next; } return Lc; } 【说明2.2】 递归函数dec_to_k_2(int n, int k)的功能是将十进制正整数n转换成k<2≤k≤9)进制数,并打印。 【函数2.2】 dec_to_k_2(int n, int k) { /*将十进制正整数n转换成k(2≤k≤9)进制数*/ if(n!=0) { dec_to_k_2( (4) ,k); printf("%d", (5) ); } }
[简答题]在主函数中已将N名学生的成绩放入一个带头结点的链表结构中,h指向链表的头结点。请编写函数fun,它的功能是:求出平均分,由函数值返回。
例如,若学生的成绩是:85,76,69,85,91,72,64,87,则平均分应当是:78.625。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
文件PROG1.C内容如下:
#include<stdio.h>
#include<stdlib.h>
#define N 8
struct slist
double s ;
struct stist * next;
;
typedef struct slist STREC;
double fun(STREC * h )
STREC * creat( double * s)
STREC * h, * p, * q;
int i=0;
h = p = (STREC * ) malloe (sizeof( STREC ));
p->s=0;
while(i<N)
q=(STREC * ) malloe ( sizeof( STREC ) ) ;
q->s=s[i] ;
i++;
p->next = q ;
p=q;
p->next = 0 ;
return h ;
void outlist (STREC * h)
STREC * p ;
p = h->next ;
prinff( " head" ) ;
do
prinff( " ->% 4.1f" , p->s) ;
p=p->next;
while(p! =0);
printf(" /n/n" ) ;
void main( )
double s[N]=85,76,69,85,91,72,64,87,ave;
STREC * h ;
h=creat( s

我来回答:

购买搜题卡查看答案
[会员特权] 开通VIP, 查看 全部题目答案
[会员特权] 享免全部广告特权
推荐91天
¥36.8
¥80元
31天
¥20.8
¥40元
365天
¥88.8
¥188元
请选择支付方式
  • 微信支付
  • 支付宝支付
点击支付即表示同意并接受了《购买须知》
立即支付 系统将自动为您注册账号
请使用微信扫码支付

订单号:

请不要关闭本页面,支付完成后请点击【支付完成】按钮
恭喜您,购买搜题卡成功
重要提示:请拍照或截图保存账号密码!
我要搜题网官网:https://www.woyaosouti.com
我已记住账号密码