首页 > 其他分享 >AUSTOj3

AUSTOj3

时间:2022-10-01 20:55:29浏览次数:44  
标签:La ++ list elem int length AUSTOj3

#include<stdio.h> //若用printf,scanf,getchar,putchar,gets,puts函数需包含该头文件
#include<malloc.h> //用malloc,free,realloc函数需包含该头文件
#define MAXSIZE 100 //设线性表初始分配空间大小
typedef int ElemType;  //先设定数据元素的类型为整型

//0:定义顺序表的结构类型
typedef struct{
ElemType *elem;
int length;
int listsize;
}SqList;
//1:初始化顺序表
int InitList_Sq(SqList &L )
{
L.elem=(ElemType*)malloc(sizeof(ElemType)*MAXSIZE);
if (!L.elem) return 0;  
L.length=0;
L.listsize=MAXSIZE;
return 1;
}
//2:打印顺序表中所有元素
void PrintList(SqList &L)
{
int i;
for(i=0;i<L.length;i++)
printf("%d\n",L.elem[i]);
}
//3:合并两个有序的顺序表,La,Lb有序,合并到Lc
void MergeList(SqList La, SqList Lb, SqList &Lc)
{
//--------补充代码--Start------

int i, j, k;
i = 0; j = 0; k = 0;
while (i < La.ength && j < Lb.length)  //先按顺序,将LaLb中元素从小到大赋值到Lc中
{
if (La.elem[i] <= Lb.elem[j])
{
Lc.elem[k] = La.elem[i];
i++; k++;
}
else
{
Lc.elem[k] = Lb.elem[j];
j++; k++;
}
}
//当表LA比表LB长时,将表LA剩下的元素赋给表LC
while (i < La.length)
{
Lc.elem[k] = La.elem[i];
i++; k++;
}
while (j < Lb.length)
{
Lc.elem[k] = Lb.elem[j];
j++; k++;
}
Lc.length = La.length + Lb.length;
}

//--------补充代码--End-------
}
//主函数
int main()
{
//以下代码请认真阅读,切勿做任何修改
//将list[0]和list[1]合并到list[2]
SqList list[3];
int i,k,n,e;
//构造2个数据表
for(k=0;k<2;k++)
{
//初始化顺序表list 1,2
InitList_Sq(list[k]);
//有序输入第k个顺序表数据元素个数
scanf("%d",&n);
//依次读取n个数据插入顺序表
for(i=0;i<n;i++)
{
//输入数据元素
scanf("%d",&e);
//插入顺序表
list[k].elem[i]=e;
}
//数据元素个数赋值
list[k].length=n;
}
//初始化顺序表list 3
InitList_Sq(list[2]);
//-----------------------------------
//执行合并操作
MergeList(list[0], list[1], list[2]);
//按顺序输出顺序表list[3]中元素
PrintList(list[2]);
return 0;
}

 

标签:La,++,list,elem,int,length,AUSTOj3
From: https://www.cnblogs.com/liujy2233/p/16747756.html

相关文章