📄 习题4-两个有序表合并.c
字号:
# include "datastru.h"
# include <stdio.h>
void merge_sqlist(SEQUENLIST la,SEQUENLIST lb,SEQUENLIST *lc){
/*两有序表合并*/
int i , j , k ;
i = j = k = 1 ;
while( i <= la.last && j <= lb.last )
if( la.datas[i] <= lb.datas[j])
{lc->datas[k] = la.datas[i] ;
k++ ;
i++ ; }
else
{lc->datas[k] = lb.datas[j] ;
k++ ;
j++ ; }
while( i <= la.last )
{ lc->datas[k] = la.datas[i] ;
k++ ;
i++ ;}
while( j <= lb.last )
{ lc->datas[k] = lb.datas[j] ;
k++ ;
j++ ;}
lc->last = k - 1;
return;
}
main( )
{ SEQUENLIST la, lb, lc;
int i, k, m;
printf("请输入la顺序表元素,元素为整型量,用空格分开,-99为结束标志 :");
la.last = 0; i = 0; scanf("%d",&i);
while (i != -99) {
/*输入la顺序表元素,建立有序表*/
k = la.last;
while((k>=1) && ( i<la.datas[k])) k--;
for(m = la.last; m >= k+1; m--) la.datas[m + 1] = la.datas[m];
la.datas[k + 1] = i;
la.last++;
scanf("%d",&i); }
printf("\n\n请输入lb顺序表元素,元素为整型量,用空格分开,-99为结束标志 :");
lb.last = 0; i = 0; scanf("%d",&i);
while (i != -99) {
/*输入lb顺序表元素,建立有序表*/
k = lb.last;
while((k>=1) && ( i<lb.datas[k])) k--;
for(m = lb.last; m >= k+1; m--) lb.datas[m + 1] = lb.datas[m];
lb.datas[k + 1] = i;
lb.last++;
scanf("%d",&i); }
printf("\nla有序表元素列表 :");
for (i = 1; i <= la.last; i++)
printf("%4d",la.datas[i]);
printf("\n");
printf("\nlb有序表元素列表 :");
for (i = 1; i <= lb.last; i++)
printf("%4d",lb.datas[i]);
printf("\n");
merge_sqlist (la, lb, &lc);
printf("\n合并后lc有序表元素列表 :");
for (i = 1; i <= lc.last; i++)
printf(" %d",lc.datas[i]);
printf("\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -