题目
给定两个递增有序的顺序表,将他们传给另一个顺序表并递减有序**
代码
var foo = 'bar';#include<stdio.h>
#define Max 100
typedef struct{
int data[Max];
int length;
}node;
void Creat(node &L)
{
int n;
printf("共输入元素个数:");
scanf("%d",&n);
int i;
for(i=0;i<n;i++){
scanf("%d",&L.data[i]);
}
L.length =n;
}
int deliver(node L,node L1,node &L2)
{
int i=0,j=0,k=0;
if(L.length <= 0 ||L1.length <= 0) return 0;
if(L.length <= 0 && L1.length > 0){
for(i=0;i<L1.length ;i++){
L2.data[i]=L1.data[i];
}
L2.length =L1.length ;
return 1;
}
if(L1.length <= 0 && L.length > 0){
for(i=0;i<L.length ;i++){
L2.data[i]=L.data[i];
}
L2.length =L.length ;
return 1;
}
while(i<L.length && j<L1.length ){
if(L.data[i]<L1.data[j]){
L2.data[k++]=L.data[i++];
continue;
}if(L.data[i]>L1.data[j]){
L2.data[k++]=L1.data[j++];
continue;
}if(L.data[i] == L1.data[j]){
L2.data[k++]=L.data[i++];
L2.data[k++]=L1.data[j++];
continue;
}
}
if(i == L.length ){
while(j<L1.length ){
L2.data[k++]=L1.data[j++];
}
L2.length =L.length +L1.length ;
return 1;
}
if(j == L1.length ){
while(i<L.length ){
L2.data[k++]=L.data[i++];
}
L2.length =L.length +L1.length ;
return 1;
}
}
node inversion(node L2)
{
int i;
node L3;
L3.length =L2.length ;
for(i=0;i<L2.length ;i++)
{
L3.data[L2.length-i-1]=L2.data[i];
}
return L3;
}
int Dis(node L)
{
if(L.length <=0) return 0;
int i=0;
for(i=0;i<L.length ;i++){
printf("%d ",L.data[i]);
}
printf("\n");
return 1;
}
int main()
{
node L,L1,L2,L3;
Creat(L);
Creat(L1);
deliver(L,L1,L2);
L3=inversion(L2);
Dis(L3);
return 0;
}