网站浏览图片怎么做的,企业网站排版规则,深圳建设厅网站,石家庄网站建设公司哪家好第26套#xff1a;
给定程序中已建立一个带有头结点的单向链表#xff0c;链表中的各结点按数据域递增有序链接。函数fun的功能是#xff1a;删除链表中数据域值相同的结点,使之只保留一个。 请在程序的下划线处填入正确的内容并把下划线删除#xff0c;使程序得出正确的结…第26套
给定程序中已建立一个带有头结点的单向链表链表中的各结点按数据域递增有序链接。函数fun的功能是删除链表中数据域值相同的结点,使之只保留一个。 请在程序的下划线处填入正确的内容并把下划线删除使程序得出正确的结果。 注意源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行也不得更改程序的结构 给定源程序
#include stdio.h
#include stdlib.h
#define N 8
typedef struct list
{ int data;
struct list *next;
} SLIST;
void fun( SLIST *h)
{ SLIST *p, *q;
ph-next;
if (p!NULL)
{ qp-next;
while(q!NULL)
{ if (p-dataq-data)
{ p-nextq-next;
free(___1___);
qp-___2___;
}
else
{ pq;
qq-___3___;
}
}
}
}
SLIST *creatlist(int *a)
{ SLIST *h,*p,*q; int i;
hp(SLIST *)malloc(sizeof(SLIST));
for(i0; iN; i)
{ q(SLIST *)malloc(sizeof(SLIST));
q-dataa[i]; p-nextq; pq;
}
p-next0;
return h;
}
void outlist(SLIST *h)
{ SLIST *p;
ph-next;
if (pNULL) printf(\nThe list is NULL!\n);
else
{ printf(\nHead);
do { printf(-%d,p-data); pp-next; } while(p!NULL);
printf(-End\n);
}
}
main( )
{ SLIST *head; int a[N]{1,2,2,3,4,4,4,5};
headcreatlist(a);
printf(\nThe list before deleting :\n); outlist(head);
fun(head);
printf(\nThe list after deleting :\n); outlist(head);
} 解题思路 本题是考察考生对链表的操作主要是解决删除链表中数据域值相同的结点。程序中共有三处要填上适当的内容使程序能运行出正确的结果。 函数fun中使用两个临时结构指针变量p和q对链表进行操作。首先p指向链表开始的next指针q指向p的next指针再利用while循环语句来判断指针q是否NULL如果q指针是指向NULL那么函数结束返回。如果不是NULL那么就要判断p和q中data值是否相同如果值相同则要 删除该结点然后继续判断下一结点值是相同如果还相同那么继续删除结点直至不相同为止。如果两个结点的值不相同那么p就指向qq指向q的next指针再继续操作上述过程。 删除结点的方法是先将p的next指针指向q的next指针再释放q指针指向的内存最后把 q指针再指向p的next指针就可以删除一个链表中的结点了。 第一处释放q指针所指的内存空间应填q。 第二处q指针指向p的next指针重新完成链接应填next。 第三处两个结点的值不相同那么q就指向q的next指针应填next。 给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n个元素按从小到 大的顺序进行排序。 请修改程序中的错误使它能得出正确的结果。 注意不要改动main函数不得增行和删行也不得更改程序的结构 给定源程序
#include stdio.h
#define N 20
void fun(int a[], int n)
{ int i, j, t, p;
for (j 0 ;j n-1 ;j) {
p j
for (i j;i n; i)
if(a[i] a[p])
p j;
t a[p] ; a[p] a[j] ; a[j] t;
}
}
main()
{
int a[N]{9,6,8,3,-1},i, m 5;
printf(排序前的数据:) ;
for(i 0;i m;i) printf(%d ,a[i]); printf(\n);
fun(a,m);
printf(排序后的数据:) ;
for(i 0;i m;i) printf(%d ,a[i]); printf(\n);
} 解题思路 第一处语句后缺少分号。 第二处保存最小值的位置所以应改为p i;。 请编写一个函数fun它的功能是求出1到m之间(含m)能被7或11整除的所有整数放在数组a中通过n返回这些数的个数。例如若传送给m的值为50则程序 输出7 11 14 21 22 28 33 35 42 44 49 注意: 部分源程序存在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容仅在函数fun的花括号中填入 你编写的若干语句。 给定源程序
#include stdio.h
#define M 100
void fun ( int m, int *a , int *n )
{
}
main( )
{ int aa[M], n, k;
fun ( 50, aa, n );
for ( k 0; k n; k )
if((k1)%200) printf(\n);
else printf( %4d, aa[k] );
printf(\n) ;
NONO( );
} 解题思路 本题是考察考生对某个数能被其他的数整除方式并把符合条件的数存放在数组a中。 我们给出的程序是使用for循环语句以及取模的方式来解决这个问题的。 参考答案
#include stdio.h
#define M 100
void fun ( int m, int *a , int *n )
{
int i ;
*n0 ;
for(i7 ; im; i)
if((i % 7 0) || (i % 11 0)) a[(*n)]i ;
}