有以下结构体说明和变量定义,相应的链表如图所示:
struet node { int data; struet node * next; *p,*q,*r;现将q所指结点多链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是( )。
A.p- >next=q->next;
B.p->next=p->next->next;
C.p->next=r;
D.p=q->next
第1题:
若有以下定义:
struct link
{ int data;
struct link *next;
} a,b,c,*p,*q;
且变量a和b之间已有如下图所示的链表结构:
指针p指向变量a,q指向变量c。则能够把c插入到a和b 之间并形成新的链表的语句组是:
A.a.next=c; c.next=b;
B.p.next=q; q.next=p.next;
C.p->next=&c; q->next=p->next;
D.(*p).next=q; (*q).next=&b;
第2题:
有以下程序:
#include <stdio.h>
#include <stdlib.h>
struct NODE
{ int num;
struct NODE *next;
};
main()
{ struet NODE *p,*q,*r;
int sum=0;
p=(struct NODE *) malloc(sizeof(struct NODE));
q=(struct NODE *) malloc(sizeof(struet NODE));
r=(struct NODE *) malloc(sizeof(struct NODE));
P- >num=1;q- >num=2;r->num=3;
p- >next=q;q- >next=r;r- >next=NULL;
sum + =q- >next- >num;sum + =P- >num;
printf("%d\n",sum);
}
执行后的输出结果是( )
A.3
B.4
C.5
D.6
第3题:
有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向此链表中的三个连续节点。 struct node {int data;struct node*next;}*P,*q,*r; 现要将q所指节点从链表中删除,同时要保持链表的连续,
以下不能完成指定操作的语句是( )。
A.p->next=q->next;
B.p->next=P->next->next;
C.p->next=r;
D.p=q->next;
第4题:
链表题:一个链表的结点结构
struct Node
{
int data ;
Node *next ;
};
typedef struct Node Node ;
(1)已知链表的头结点head,写一个函数把这个链表
逆序( Intel)
第5题:
有以下结构体说明和变量定义,如图所示: struct node {int data;struct node *next;} *p,*q,*r,
现妥将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是______。
A.P->next=q->next;
B.p->next=(p->next->next;
C.p->next=r
D.p=q->next;
第6题:
有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中的三个连续结点。
struct node
{ int data;
struct node *next;
} *p, *q, *r;
现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是
A.r->next=q; q->next=r->next; p->next=r;
B.q->next=r->next; p->next=r; r->next=q;
C.p->next=r; q->next=r->next; r->next=q;
D.q->next=r->next; r->next=q; p->next=r;
第7题:
假定已建立以下链表结构,且指针p和q已指向如图所示的结点:
则以下选项中司将q所指结点从链表中删除并释放该结点的语句组是______。
A.(*p).next=(*q).next; free(p);
B.p=q->next; free(q);
C.p=q; free(q);
D.p->next=q->next; free(q);
第8题:
有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把节点b连接到节点a 之后的语句是
struct node
{ char data;
struct node*next;
}a,b,*p= &a,*q=&b;
A.a. next=q;
B.p. next= &b;
C.p->next=&b;
D.(*p).next=q;
第9题:
阅读以下说明和C语言函数,将应填入(n)。
【说明】
已知包含头结点(不存储元素)的单链表的元素已经按照非递减方式排序,函数 compress(NODE*head)的功能是去掉其中重复的元素,使得链表中的元素互不相同。
处理过程中,当元素重复出现时,保留元素第一次出现所在的结点。
图2-1(a)、(b)是经函数compress()处理前后的链表结构示例图。
链表的结点类型定义如下:
typedef struct Node{
int data;
struct Node *next;
}NODE;
【C语言函数】
void compress(NODE *head)
{ NODE *ptr,*q;
ptr= (1); /*取得第一个元素结点的指针*/
while( (2)&& ptr->next) {
q=ptr->next;
while(q&&(3)) { /*处理重复元素*/
(4)q->next;
free(q);
q=ptr->next;
}
(5) ptr->next;
}/*end of while */
}/*end of compress*/
第10题:
有以下结构说明和变量定义,指针p、q、r分别指向链表中的3个连续结点。
A.
B.
C.
D.
现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能按要求完成操作的语句是( )。
A.A
B.B
C.C
D.D