函数题:删除顺序表中的偶数【有题解视频】
本题要求实现一个函数,可删除顺序表中的偶数元素。
### 函数接口定义:
c
void Del_even(SqList *L);
其中 L是待删除元素的顺序表,也是删除后返回的顺序表。
### 裁判测试程序样例:
c
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
typedef int DataType;
#define LISTSIZE 100
typedef struct
{
DataType items[LISTSIZE]; /* 存放顺序表元素的数组 */
int length; /* 表示线性表的当前表长 */
}SqList;
int InitSqList(SqList *L)
{ /* L为指向顺序表的指针 */
L->length = 0;
return 1;
}
int SqListEmpty( SqList L )
{/* L为顺序表 */
if( L.length <= 0 )
return 1;
else
return 0;
}
int SqListInsert( SqList *L, int pos, DataType item )
{
int j;
if ( L->length == LISTSIZE ) // "溢出”处理
{
printf("overflow!\n");
return 0;
}
if ( (pos<=0) || (pos > L->length+1) ) // pos值"超出”处理
{
printf("position is error!/n");
return 0;
}
for (j = L->length -1; j >=pos-1; j--)
L-> items[j+1] = L-> items[j]; //后移一个位置
L-> items[pos-1] = item; //新的数据元素写入
L->length++; //线性表的长度增加1
return 1;
}
int SqListDelete ( SqList *L, int pos, DataType *item )
{/* L为指向顺序表的指针,pos为删除位置,用于item返回被删元素 */
int i;
if( SqListEmpty(*L) )
{
printf("顺序表为空表,无法进行删除操作!");
return 0;
}
if ( ( pos<1 ) || ( pos>L->length ) )
// 判断pos值是否超出所允许的范围
{
printf("删除位置不合法,其取值范围应该是[1,length]");
return 0;
}
*item = L->items[pos-1]; // 把第pos个元素赋给*item
for ( i=pos ; i<L->length ; i++ )
L->items[i-1]= L->items[i]; // 第i个元素后的所有元素依次前移
L->length--; // 顺序表长度减 1
return 1;
}
int TraverseSqList(SqList L)
{ /* L为顺序表 */
int i;
for (i=0;i<L.length;i++)
{
printf("%d ",L.items[i]);
}
printf("\n");
return 1;
}
void Del_even(SqList *L);
int main()
{
SqList A;
DataType x;
char ch;
int i,j,pos = 1;
InitSqList(&A);
do
{
scanf("%d",&x);
SqListInsert( &A , pos++ , x );
}while ((ch=getchar())!='\n');
Del_even(&A);
TraverseSqList(A);
return 0;
}
/* 请在这里填写答案 */
### 输入样例:
in
21 54 56 78 94 11 13 53 64 97 66 68 72 19
### 输出样例:
out
21 11 13 53 97 19
答案:若无答案欢迎评论
#写在前面的话#
*提供题解视频,是为了帮助大家掌握算法的思想,在今后的编程、考试、面试中,换了语言,换了编译器,换了开发平台,都能重现这种思想,从而编写出任意语言任意编译器任意开发平台下面的这种算法的代码来,所以对于一打开题解报告,就直接拖到视频最后看参考代码的做法,我们非常不赞同,也不符合我们制作PPT录制讲解视频的初衷,希望大家体谅我们的苦心。*
https://www.bilibili.com/video/BV1u34y187WK?spm_id_from=333.999.0.0
视频讲解的是删除顺序表中的负数元素,删除偶数元素,只需要修改其中的if条件即可完成。

### 函数接口定义:
c
void Del_even(SqList *L);
其中 L是待删除元素的顺序表,也是删除后返回的顺序表。
### 裁判测试程序样例:
c
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
typedef int DataType;
#define LISTSIZE 100
typedef struct
{
DataType items[LISTSIZE]; /* 存放顺序表元素的数组 */
int length; /* 表示线性表的当前表长 */
}SqList;
int InitSqList(SqList *L)
{ /* L为指向顺序表的指针 */
L->length = 0;
return 1;
}
int SqListEmpty( SqList L )
{/* L为顺序表 */
if( L.length <= 0 )
return 1;
else
return 0;
}
int SqListInsert( SqList *L, int pos, DataType item )
{
int j;
if ( L->length == LISTSIZE ) // "溢出”处理
{
printf("overflow!\n");
return 0;
}
if ( (pos<=0) || (pos > L->length+1) ) // pos值"超出”处理
{
printf("position is error!/n");
return 0;
}
for (j = L->length -1; j >=pos-1; j--)
L-> items[j+1] = L-> items[j]; //后移一个位置
L-> items[pos-1] = item; //新的数据元素写入
L->length++; //线性表的长度增加1
return 1;
}
int SqListDelete ( SqList *L, int pos, DataType *item )
{/* L为指向顺序表的指针,pos为删除位置,用于item返回被删元素 */
int i;
if( SqListEmpty(*L) )
{
printf("顺序表为空表,无法进行删除操作!");
return 0;
}
if ( ( pos<1 ) || ( pos>L->length ) )
// 判断pos值是否超出所允许的范围
{
printf("删除位置不合法,其取值范围应该是[1,length]");
return 0;
}
*item = L->items[pos-1]; // 把第pos个元素赋给*item
for ( i=pos ; i<L->length ; i++ )
L->items[i-1]= L->items[i]; // 第i个元素后的所有元素依次前移
L->length--; // 顺序表长度减 1
return 1;
}
int TraverseSqList(SqList L)
{ /* L为顺序表 */
int i;
for (i=0;i<L.length;i++)
{
printf("%d ",L.items[i]);
}
printf("\n");
return 1;
}
void Del_even(SqList *L);
int main()
{
SqList A;
DataType x;
char ch;
int i,j,pos = 1;
InitSqList(&A);
do
{
scanf("%d",&x);
SqListInsert( &A , pos++ , x );
}while ((ch=getchar())!='\n');
Del_even(&A);
TraverseSqList(A);
return 0;
}
/* 请在这里填写答案 */
### 输入样例:
in
21 54 56 78 94 11 13 53 64 97 66 68 72 19
### 输出样例:
out
21 11 13 53 97 19
答案:若无答案欢迎评论
#写在前面的话#
*提供题解视频,是为了帮助大家掌握算法的思想,在今后的编程、考试、面试中,换了语言,换了编译器,换了开发平台,都能重现这种思想,从而编写出任意语言任意编译器任意开发平台下面的这种算法的代码来,所以对于一打开题解报告,就直接拖到视频最后看参考代码的做法,我们非常不赞同,也不符合我们制作PPT录制讲解视频的初衷,希望大家体谅我们的苦心。*
https://www.bilibili.com/video/BV1u34y187WK?spm_id_from=333.999.0.0
视频讲解的是删除顺序表中的负数元素,删除偶数元素,只需要修改其中的if条件即可完成。
