程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均已正确定义,并用于指向链表结点,指针变量s总是作为头指针向链表的第—个结点。
若有以下程序段 q=s; s=s->next; p=s; while(p->next) p=p->next; P->next=q; q->next=NULL; 该程序段实现的功能是______。
A.首结点成为尾结点
B.尾结点成为首结点
C.删除首结点
D.删除尾结点
以下程序中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是
A.main( ) { int *p; fun(p); ┆ } int fun(int *p) { int s; p=&s;}
B.main( ) { int *p; fun(&p); ┆ } int fun(int **p) { int s; *p=&s;}
C.#include<stdlib.h> main( ) { int *p; fun(&p); ┆ } int fun(int **p) { *p=(int*)malloc(2);}
D.#include<stdlib.h> main( ) { int *p; fun(p); ┆ } int fun(int *p) { p=(int*)malloc(sizeof(int));}
设线性链表中结点的结构为(data,next)。已知指针q所指结点是指针结点p的直接前驱,若在*q与*p之间插入结点*s,则应执行下列()操作。
A.s->next=p->next;p->next=s;
B.q->next=s;s->next=p;
C.p->next=s->next;s->next=p;
D.p->next=s;s->next=q;
以下程序段中,能够通过调用函数fun(),使main()函数中的指针变量p指向一个合法的整型单元的是( )。
A.main() {int*p; fun(p); … } int fun(int*p) {int s; p=&s; }
B.main {int*p fun(&p); … } iht fun(int**p) {int s; *p=&s;}
C.main() {int*p; fun(&p); } int fun(int**p) {*p=(int*)malloc(2);}
D.main() {int*p; fun(p); } int fun(int*p) {p=(int*)malloc(sizeo(int));}
以下程序段中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是______。
A.main() { int *p; fun(p); …… } int fun(int *p) {int s; p=&s;}
B.main() { int *p; fun(&p); …… } int fun(int **p) {int s; *p=&s;}
C.# include<stdlib. h> main() {int *p; fun(&p); …… } int fun(int **p) {*p=(int *)malloc(2);}
D.# include<stdlib. h> main() { int *p; fun(p); …… } int fun(int *p) {p=(int *)malloc(sizeof(int));}
下程序中,能够通过调用函数 数中的指针变量 p 指向一个合法的整型单元的是 A) p; p); p) s; p=&s; B) p; p); *q) s; *q=&s; C) # p; p); *q) *q=(); D) # *p; p); p) p=(); 2003 年 4 月 45 题 注释: 这个题很有意思。考查了: 1) 指针的指针的使用 2) 动态内存分配与自动变量的内存分配。 动态分配的内存必须调用 函数才能释放,而自动变量一旦跳出它的代码作用范围,就会由编译器自动释放掉。 让我们先看: A) 选项无论 中 不会影响到主函数中 为它是值传递 B) 选项倒是把 函数,但遗憾的是,由于 s 是个自动变量,当推出 函数后, s 变量所占内存单元会被会被释放掉,此时主函数中的 p 还是没法指向一个合法的 单元 C) 选项 的形参 *p;表明 p 是个指向指针变量的指针变量,即是个指针的指针。 而主函数中的 p; 表明 &p, &参和形参类型一致。 的功能是使实参 变量, 又由于该 变量是由 动态分配的,所以推出 函数并不会影响实参 故C 是对 D) 选项犯了和 真想不到二 哈 !
在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行( )。
A.s→link=p→dink; p→link=s
B.p→link=s; s→link=q
C.p→link=s→4ink; s→link=p
D.q→link=s; s→link=p
在一个单链表中,q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行(29)。
A.s→link=p→link;p→link=s;
B.p→link=s;s→link=q;
C.p→link=s→link;s→link=p;
D.q→link=s;s→link=p;
以下程序中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是
A.main() { int *p; fun(p); … } int fun(int *p) { ints; p=&s;}
B.main() { int *p; fun(&p); … } int fun(int **p) { int s; *p=&s;)
C.#include main() { int *p; fun(&p); … } int fun(int **p) *p=(int*)malloc(2);}
D.#include main() { iht *p; fun(p); … } iht fun(iht *p) { p=(int*)malloc(sizeof(int)); }
以下程序段中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是
A.main() { int*p; fun(p); … } int fun(int*p) {int s; p=&s; }
B.main { int *p; fun(&p); … } int fun(int**p) {int s; *p=&s; }
C.#include <stdlib.h> main() { int *p; fun(&p); … } int fun(int**p) {*p=(int*)malloc(2); }
D.#include <stdlib.h> main() { int *p; fun(p); … } int fun(int *p) {p=(int*)malloc(sizeof(int));}