以下程序首先建立一条链表,然后按照如下顺序删除链表中的结点:以链表的第一个结点为1号结点开始依次搜索,删除所有序号为3的倍数的结点,即删除第3、6、9、……个结点,当搜索一遍结束后再从链表头部继续此操作,直到链表的结点个数少于3个为止。 程序输出为: 当前

admin2019-04-04  40

问题 以下程序首先建立一条链表,然后按照如下顺序删除链表中的结点:以链表的第一个结点为1号结点开始依次搜索,删除所有序号为3的倍数的结点,即删除第3、6、9、……个结点,当搜索一遍结束后再从链表头部继续此操作,直到链表的结点个数少于3个为止。
程序输出为:
当前链表中的结点依次为:23 12 32 54 74 25 65 94 17 72
第1轮删除的结点为:32 25 17
当前链表中的结点依次为:23 12 54 74 65 94 72
第      2轮删除的结点为:54 94
当前链表中的结点依次为:23 12 74 65 72
……
第      5轮删除的结点为:72
链表中剩余的结点为:23 12
[程序]
#includestructnode{
intdata;
nodenext;
};
nodeInsert(intx,nodehead)
{ nodep;
p=newnode;p->data=x;
p->next=head;returnp;
}
voidfun(nodehead,intn)
{ nodep,p1,q;
inti,num=1;
if(!head)return;while(n>2){
cout<<"当前链表中的结点依次为:";p=head;
while(p){
cout<data<<" ";p=p->next;
}
cout< (1) ;
i=2;while(q){
if(i%3==0){
cout<data<<’\t’;
(2) ;
deleteq;
q=p->next;n--;
i++;
}
else{
p=p->next;i++;
(3) ;
}
}
num++;
cout<}
cout<<"链表中剩余的结点为:";p=head;
while(p){
cout<data<<"";
(4) ;
}
cout<}
voidmain(void)
{
inta[10]={23,12,32,54,74,25,65,94,17,72};
nodehead=0;
for(inti=9;i>=0;i--)
(5) ;
fun(head,10);
}
【要求】
打开T盘中MYFAtxt文件,将其复制到文件myfacpp中(或把上述程序录入到文件myfa.cpp中),根据题目要求及程序中语句之间的逻辑关系对程序进行完善。程序中的注解可以不输入。
完善后的源程序文件myfacpp必须放在T盘的根目录下,供阅卷用。

选项

答案(1)q=head->next (2)p->next=q->next (3)q=q->next (4)p=p->next (5)head=Insert(a[i],head)

解析
转载请注明原文地址:https://kaotiyun.com/show/KbhZ777K
0

最新回复(0)