题目详情
当前位置:首页 > 计算机考试 > 中级软件设计师
题目详情:
发布时间:2024-06-22 01:41:30

[单项选择]在一个单链表中,若p所指结点不是最后结点,在p所指结点之后插入s所指结点,则应执行()操作。
A. s->link=p;p->link=s;
B. s->link=p->link:p->link=s:
C. S->link=p->link; p=s:
D. p->link=s:s->link=p:

更多"在一个单链表中,若p所指结点不是最后结点,在p所指结点之后插入s所指结"的相关试题:

[单项选择]在循环双链表的P所指结点之后插入S所指结点的操作是( )
A. P->right=S;P->fight->left=S:S->left=P;S->fight=P->right
B. P->fight=S;S->left=P;P->fight->left=S;S->fight=P->fight
C. S->left=P;S->right=P->right;P->fight=S;P->right->left=S
D. S->left=P;S->right=P->right;P->right->left=S;P->right=S
[单项选择]设单链表中结点的结构为(data,link)。已知指针q所指结点是指针p所指结点的直接前驱,若在*q与*p之间插入结点*s,则应执行下列哪一个操作()
A. s↑.link=p↑.link;p↑.link:=s
B. q↑.link:=s;s↑link=p
C. p↑.link:=s↑.link;s↑.link:=p
D. P↑.link:=s;s↑.link:=q
[单项选择]

对于单链表,如果仅仅知道一个指向链表中某结点的指针p, (54) 将p所指结点的数据元素与其确实存在的直接前驱交换,对于单循环链表来说 (55) ,而对双向链表来说 (56)

(54)处填()。
A. 可以
B. 不可以
C. 不确定
D. 仅能一次
[单项选择]在一个单链表中,若p所指的结点不是最后结点,则删除p所指的结点的后继结点的正确操作是( )。
A. p=p->next
B. p->next=D->next
C. p->next=p->next->next
D. p->next=p
[单项选择]非空双循环链表中,在q所指的结点前插入一个由p所指结点的过程依次为:p->next=q; p->prior=q->prior; q->prior=p; 下一条语句是______。
A. q->nex=p;
B. q->prior->next=p;
C. p->prior->next=p;
D. p->next->prior=p;
[单项选择]在单链表中,删除p所指结点的直接后继的操作是 ( )
A. p—>next=p—>next—>next;
B. p=p—>next;p—>next=p—>next—>next;
C. p—>next=p—>next;
D. p=p—>next—>next;
[填空题]在带有头结点的单循环链表head中,指针p所指结点为尾结点的条件是_________。
[单项选择]在双向链表中删除指针p所指的结点(pre和next,是结点的指针域,pre指向结点的前驱,next指向结点的后继),则需要执行( )。
A. p↑.next:=p↑.pre;p↑.pre:=p;
B. p↑.next↑.pre:=p↑.pre;p↑.pre↑.next:=p;
C. p↑.pre:=p↑.next;p↑.next=p↑.pre;
D. p↑.pre↑.next:=p↑.next;p↑.next↑.pre:=p↑.pre;
[填空题]以下程序段用以统计链表中元素的个数。其中first指向链表第一个结点,count用来统计结点个数。请填空。   struct link   { char data;    struct link * next;   }   struct link * p,* first;   |   int count=0;   p=first;   while( 【17】 )   {    【18】 ;   p= 【19】 ;   }
[填空题]以下程序建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-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( );
[填空题]请补充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
[简答题]分别写出删除单向和双向循环链表中指针P所指的结点的直接后继结点(非尾结点)对应的语句。
(1)单向循环链表。
(2)双向循环链表。
[填空题] 假设某个不设头指针的无头结点单向循环链表的长度大于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)

我来回答:

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

订单号:

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