题目详情
当前位置:首页 > 职业培训考试
题目详情:
发布时间:2023-11-22 19:14:08

[单项选择]设rear是指向非空带头结点的循环单链表的尾指针,则删除起始结点的操作可表示为( )
A. s=rear;
B. rear=rear—>next;
C. rear=rear—>next—>next;
D. s=rear—>next—>next;

更多"设rear是指向非空带头结点的循环单链表的尾指针,则删除起始结点的操作"的相关试题:

[单项选择]设rear是指向非空带头结点的循环单链表的尾指针,则删除起始结点的操作可表示为( )
A. s=rear;
B. rear=rear—>next;
C. rear=rear—>next—>next;
D. s=rear—>next—>next;
[填空题]以下函数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’; ______: }
[填空题]以下程序段的功能是统计链表中结点的个数,其中first为指向第一个结点的指针(链表带头结点)。请在下划线内填入正确内容。 struct link { char data; struct link*next;}; … struct link*p,*first; int c=0; p=first; while( 【19】 ) { c++; p= 【20】 ;}
[简答题]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
[填空题]以下程序建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(键表头结点的data域不放数据,表空的条件是ph->next==NULL),请填空。
#include<stdio.h>
struct list int data;struct list*next;;
struct list*creatlist( )
struct list*p,*q,*ph;int a;ph=(struct list*)malloc(sizeof(struct list));
p=q=ph;printf("Input an integer number;entre-1 to end:/n");
scanf("%d",&a);
while(a!=-1)
p=(struct list*)malloc(sizeof(struct list));
【19】 =a;q->next=p; 【20】 =p;scanf("%d",&a);
p->next=’/0’;return(ph);
main( )
struct list * head;head=creatlist( );
[简答题]设某带头结点的单链表的结点结构说明如下:
typedef struct nodel

int data;
struct nodel*next;
node;
试设计一个算法:void copy(node*head1, node*head2),将以head1为头指针的单链表复制到一个不带有头结点且以head2为头指针的单链表中。
[填空题]请补充fun函数,该函数的功能是:将带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。
[注意] 部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
[试题源程序]
#include <stdio.h>
#include <stdlib.h>
#define N 5
typedef Struct node
int data;
struct node *next;
NODE;
void fun(NODE *h)

NODE *p, *q, *r;
p= (1) ;
if ( (2) ) return;
q=P->next;
P->next=NULL;
while (q)

r=q->next;
q->next=p;
p=q;
q= (3) ;

h->next=p;

NODE *creatlis (int a[])

NODE *h, *p, *q; int i;
h= (NODE *)malloc(sizeof(NODE));
h>next=NULL:
for(i=0; i<N; i++)

q=(NODE *)malloc(sizeof(NODE));
q->data=a[i];
q->next=NULL;
if(h->next==NULL)
h->next=p=q;
else

p->next=q; p=q;


return h;

void ou list(NODE *h)

NODE *p;
p=h->next;
if(p==NU
[简答题]设计在无头结点的单链表中删除第i个结点的算法。
[填空题]以下函数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’;
______;

[单项选择]单向链表的每一个结点都有一个指向它的后续结点的指针link,现有结点p和q,结点q在结点p的前面,要删除结点P,正确的操作应该是()
A. q↑.link:=p↑.link;
B. p↑.link:=q↑.link;
C. q↑.link:=p;p↑.link:=q;
D. q:=p↑.link;p↑.link:=q↑.link;
[单项选择]单向链表的每一个结点都有一个指向它的后继结点的指针link,现有结点p和q,结点q在结点p的前面,要删除结点p,正确的操作应该是( )。
A. q↑.link:=p↑.link;
B. p ↑.link:=q ↑.link;
C. q ↑.link:=p;p ↑.link:=q;
D. q:=q ↑.1ink;p ↑.link:=q ↑.link;
[单项选择]单向链表中往往含有一个头结点,该结点不存储数据元素,一般令链表的头指针指向该结点,而该结点指针域的值为第一个元素结点的指针。以下关于单链表头结点的叙述中,错误的是()。
A. 若在头结点中存入链表长度值,则求链表长度运算的时间复杂度为O(1)
B. 在链表的任何一个元素前后进行插入和删除操作可用一致的方式进行处理
C. 加入头结点后,代表链表的头指针不因为链表为空而改变
D. 加入头结点后,在链表中进行查找运算的时间复杂度为O(1)
[填空题] 假设某个不设头指针的无头结点单向循环链表的长度大于1,S为指向链表中某个结点的指针。算法f30的功能是,删除并返回链表中指针S所指结点的前驱。请在空缺处填入合适的内容,使其成为完整的算法。
typedef struct node{
DataType data;
struct node *next;
}*LinkList;
DataType f 30(LinkList s){
LinkList pre,p;
DataType e;
pre=s;
p=s—>next;
while( (1) ){
pre=p;
(2)
}
pre—>next= (3) ;
e=p—>data;
free(p);
return e;
} (1)
[单项选择]对于n个结点的单向链表(无表头结点)需要指针单元的个数至少为
A. n-1
B. n
C. n+1
D. 2n

我来回答:

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

订单号:

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