📄 习题7-顺序表并集运算.c
字号:
# include "datastru.h"
# include <stdio.h>
int insert (SEQUENLIST *a, DATATYPE1 x, int i ){
/*将x元素插在a表的指定的i的位置上*/
int k;
if ( i < 1 || i > a->last + 1 || a->last >= MAXSIZE)
return 0;
else {
for ( k = a->last ; k >= i ; k --)
a->datas[ k+1 ] = a->datas[k];
a->datas[i] = x;
a->last++;
return 1; }
}
int locate (SEQUENLIST *a, DATATYPE1 x){
/*x元素在a表中,返回x元素所在位置k;否则返回0*/
int k;
k = 1;
while (k <= a->last && a->datas[k] != x )
k++;
if ( k <= a->last)
return k ;
else return 0;
}
void unite ( SEQUENLIST *la, SEQUENLIST lb)
{
int i;
for ( i = 1 ; i <= lb.last ; i++)
if(! locate(la,lb.datas[i])) /*如果lb表中元素不在la表中,*/
insert ( la, lb.datas[i], la->last + 1); /*则将lb表中的该元素插到la表的最后*/
}
main( )
{ SEQUENLIST a, b;
int i, j, k;
printf("请输入la顺序表元素,元素为整型量,用空格分开,-99为结束标志 :");
j = 0; k = 1; i = 0; scanf("%d",&i);
while (i != -99) { j++; a.datas[k] = i; k++; scanf("%d",&i); } /*输入la顺序表元素*/
a.last = j;
printf("\nla顺序表元素列表 :");
for (i = 1; i<=a.last; i++)
printf("%d ",a.datas[i]);
printf("\n");
printf("\n请输入lb顺序表元素,元素为整型量,用空格分开,-99为结束标志 :");
j = 0; k = 1; i = 0; scanf("%d",&i);
while (i != -99) { j++; b.datas[k] = i; k++; scanf("%d",&i); } /*输入lb顺序表元素*/
b.last = j;
printf("\n\nlb顺序表元素列表 :");
for (i = 1; i<=b.last; i++)
printf("%d ",b.datas[i]);
printf("\n");
unite (&a, b); /*la顺序表和lb顺序表合并*/
printf("\n\n顺序表并集后la (la U lb) = ");
for (i = 1; i <= a.last; i++)
printf(" %d",a.datas[i]);
printf("\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -