当前位置:首页 >课程 >C语言程序设计-新

1、 问题:若有以下定义: struct node { int data; struct nodenext; }; struct nodep; 已建立如下图所示的链表: ┌──┬──┐┌──┬──┐ ┌──┬──┐ p→│data│next┼→│data│next┼→…→│data│NULL│ └──┴──┘└──┴──┘ └──┴──┘ 指针p指向第一个结点,能输出链表所有结点的数据成员data的循环语句是( )。

A、while(p!=NULL) { printf(“%d,”,p->
data)
p++
}
B、while(p) { printf(“%d,”, p.data)
p=p->
next
}
C、for(
p!=NULL
p++) printf(“%d,”, p->
data)
D、for(
p
p=p->
next) printf(“%d,”, (p).data)

参考答案:请扫码使用小程序查看答案

2、 问题:若有以下定义: struct node { int data; struct nodenext; }; struct nodehead,*p; 已建立如下图所示的链表: p ↓ ┌──┬──┐┌──┬──┐┌──┬──┐ head→│data│next┼→│data│next┼→…→│data│NULL│ └──┴──┘└──┴──┘└──┴──┘ 能删除指针p所指向结点的程序段是( )。

A、p = p->
next
head->
next=p->
next
free(p)
B、free(p)
p = p->
next
head->
next=p->
next
C、head->
next = p->
next
free(p)
D、free(p)
head->
next = p->
next

参考答案:请扫码使用小程序查看答案

3、 问题:若有以下定义: struct node { int data; struct nodenext; } struct node m,n,k,head,p; 已建立如下图所示的链表: m n k ┌──┬──┐ ┌──┬──┐ ┌──┬──┐ head →│data│next┼ →│data│NULL│ p →│data│next│ └──┴──┘ └──┴──┘ └──┴──┘ 指针head指向结点m, m.next指向结点n,p指向结点k,不能把结点k插到m和n之间形成新链表的程

A、m.next = p
p->
next = head->
next
B、(head).next = p
(*p).next = n
C、head->
next = k
p->
next = head->
next
D、m.next = k
k.next = n

参考答案:请扫码使用小程序查看答案

4、 问题:若有以下定义: struct node { int data; struct nodenext; }p,*q; 已建立如下图所示的链表: ┌──┬──┐ ┌──┬──┐ … p →│data│next┼→│data│NULL│ └──┴──┘ └──┴──┘ ┌──┬──┐ q →│data│next│ └──┴──┘ 不能将指针q所指结点连到上图所示链表末尾的语句是( )。

A、q->
next=NULL
p=p->
next
p->
next=q
B、p=p->
next
p->
next=q
q->
next=NULL
C、p=p->
next
q->
next=p->
next
p->
next=q
D、q->
next=p->
next
p=p->
next
p->
next=q

参考答案:请扫码使用小程序查看答案

5、 问题:若有以下定义: struct node { int data; struct nodenext; }p,q,t; 指针p、t和q分别指向图中所示结点: p t q ↓ ↓ ↓ ┌──┬──┐ ┌──┬──┐ ┌──┬──┐ │data│next┼→│data│next┼→│data│next┼→… └──┴──┘ └──┴──┘ └──┴──┘ 现要将t和q所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是( )。

A、t->
next=q->
next
p->
next=q
q->
next=t
B、p->
next=q
t->
next=q->
next
q->
next=t
C、q->
next=t
t->
next=q->
next
p->
next=q
D、t->
next=q->
next
q->
next=t
p->
nex

参考答案:请扫码使用小程序查看答案