pbhb
ext
1
while
2
ifpadatapbdata
3
else
4
5
参考答案:
1ifpaNULLretur
true
2pbNULLpadatapbdata
3retur
i
clusio
papb
4pbpb
ext
5retur
false10在本题的程序中,函数create_li
k_list
建立一个具有
个结点的循环链表;
函数josephus
Im对由create_li
k_list
所建立的具有
个结点的循环链表
按一定的次序逐个输出,并删除链表中的所有结点。参数
0指明循环链表
的结点个数,参数I1≤I≤
指明起始结点,参数m(m0是步长),指明从起
始结点或前次被删除并输出的结点之后的第m个结点作为本次被输出并删除的
结点。例如,对于下图所示的具有6个结点的循环链表,在调用josephus632
后,将输出513642。请在空框处填上适当内容,每框只填一个语句。
defi
eNULL0typedefstruct
ode
i
tdatastruct
ode
ext
odeli
klisttype
li
klisttypecreate_li
k_listi
t
li
klisttypeheadpqi
tI
headNULLif
0
headli
klisttypemallocsizeofli
klisttypepheadforI1I
1I此循环用于建立一个链表,链表的内容从1至
1
pdataIqli
klisttypemallocsizeofli
klistttype
12pdata
f3retur
head
建立从尾链到首的环形结构
voidJosephusi
t
i
tji
tmli
klisttypepqi
tj
pcreate_li
k_list
forI1Ipp
ext
4whilej
forI1Im1Ipp
ext5
pri
tf“8d”qdata6
freeqjj1参考答案:
1p
extq2pq3p
exthead4j05qp
ext6p
extq
ext11在下列程序中,函数differe
ceAB用于求两集合之差CAB,即当且仅当e是A中的一个元素,且不是B中的元素时,e是C中的一个元素。集合用有序链表实现,用一个空链表表示一个空集合,表示非空集合的链表根据元素之值按递增排列,执行CAB之后,表示集合A和B的链表不变,若结果集合C非空,则表示它的链表应根据元素之值按递增序排列。函数appe
d用于在链表中添加结点。
i
cludestdiohdefi
eNULL0typedefstruct
ode
i
tdatastruct
ode
extNODE
NODEappe
dNODElasti
txlast
extNODEmallocsizeofNODElast
extdatax
fretur
last
ext
NODEdiffere
ceNODEANODEB
NODEClast
ClastNODEmallocsizeofNODE
while
1
ifAdataBdata
lastappe
dlastAdata
AA
ext
else
if
2
AA
ext
BB
ext
else
3
while
4
lastappe
dlastAdata
AA
ext
5
lastC
CC
ext
freelast
retur
C
参考答案:
1ANULLBNULL
2AdataBdata
3BB
ext
4ANULL
5last
extNULL12阅读以下算法,填r