-->
当前位置:首页 > 题库 > 正文内容

函数题:拼接两个顺序表【有题解视频】

Luz3年前 (2022-03-24)题库435
A、B两个顺序表,实现算法ListJoin() ,将B表中的元素直接存入A表的后面,并将A中数据元素依次打印出来的功能。

### 函数接口定义:
c
在这里描述函数接口。例如:
void ListJoin(List A,List B);

其中 A 和 B 都是用户传入的参数,即两个待合并的顺序表,其中B拼接在A之后。

### 裁判测试程序样例:
c
#include <stdio.h>
typedef int ElemType;
#define NumSize 100

typedef struct
{
ElemType dat[NumSize]; //顺序表定义
int num; //表中数据的多少
} List;


void initList(List *L) //初始化顺序表
{
L->num=0;
}

int LengthList(List L) //求顺序表的长度
{
return(L.num);
}
//在顺序表中的第n个位置后面插入一个数据
int InsertList(List *L,int n,ElemType x)
{
int i,j;
j=L->num;//求表中数据元素的个数
if(j<n)
{
printf("插入位置不合法\n");
return 0;//插入失败返回0
}
if(n>=NumSize)
{
printf("插入位置不合法\n");
return 0;
}
for(i=j; i>n;i--)
{
L->dat[i] =L->dat[i-1]; //将第n个后的元素依次后移一位
}
L->dat[i] = x; //插入数据x
L->num ++;//顺序表总长度加1
return (1); //插入成功败返回1
}
int DispList(List L)//遍历顺序表中元素
{
int i,j;
j=LengthList(L);//求表中数据元素的个数
printf("表中元素是:");
for(i=0;i<j;i++)
{
printf("%d ",L.dat[i]); //显示表中元素
}
return 0;
}

int main(void){
List A,B;
int i,j;
ElemType x;

initList(&A);
initList(&B);
// 输入A表数据
i = 0;
while(1)
{
scanf("%d",&x);
if (x == -1) break;
InsertList(&A,i,x);
++i;
}

// 输入B表数据
i = 0;
while (1)
{
scanf("%d",&x);
if (x == -1) break;
InsertList(&B, i, x);
++i;
}
ListJoin(A,B);
return 0;
}
/* 请在这里填写答案 */


### 输入样例:

在这里给出一组输入。例如:

in
2 3 1 7 9 -1
1 7 0 -1



### 输出样例:

在这里给出相应的输出。例如:

out
表中元素是:2 3 1 7 9 1 7 0








答案:若无答案欢迎评论

#写在前面的话#

*提供题解视频,是为了帮助大家掌握算法的思想,在今后的编程、考试、面试中,换了语言,换了编译器,换了开发平台,都能重现这种思想,从而编写出任意语言任意编译器任意开发平台下面的这种算法的代码来,所以对于一打开题解报告,就直接拖到视频最后看参考代码的做法,我们非常不赞同,也不符合我们制作PPT录制讲解视频的初衷,希望大家体谅我们的苦心。*

https://www.bilibili.com/video/BV1Ca411b7zb?spm_id_from=333.999.0.0

![SqList4.png](~/2cc03b5c-816e-4493-9812-a5f61fa89b16.png)

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。