删除所有奇数顺序表c语言,怎么将一个线性表(顺序表)拆分成两个奇偶表(C语言)?...

如何将线性表A拆分成线性表A和B,使得A存放奇数,B存放偶数?

1.基础函数

1.1 get取函数

int get(nod *la,int i)

{

return la->data[i];

}

1.2 insert插入函数

void insert(nod *la,int x,int j)

{

int i;

for(i=length;i>=j;i--)

{

la->data[i+1]=la->data[i];

}

la->data[j]=x;

la->len++;

}

1.3 Delete删除函数

void Delete(nod* la,int i)

{

int j;

for(j=i+1;j<=12;j++)

la->data[j-1]=la->data[j];

la->len--;

}

2. 主函数

思路不难,总的来说也就是一个简单的判断,如果该数可以被2整除,那么它就是整数;如果不能,它就是奇数。

此程序采用的是顺序表,这里有定义如下:

typedef struct node

{

int data[maxsize];//#define maxsize 1024

int len;

}nod;

2.1 清零

memset(la.data,0,sizeof(la.data));

memset(lb.data,0,sizeof(lb.data));

事实证明,清零和不清零,似乎没有什么大的区别。

2.2 循环判断

while(i<=la.len)

{

x=get(&la,i);

if(x%2==0)

{

insert(&lb,x,j);

j++;

Delete(&la,i);

}

else i++;

}

这里用&la,&lb是因为之前定义的nod la,lb;

2.3 输出结果

for(i=1;i<=la.len;i++)

printf("%d ",la.data[i]);

putchar(10);

for(i=1;i<=lb.len;i++)

printf("%d ",lb.data[i]);

3. 代码

#include

#include

#define maxsize 1024

#define length 11

typedef struct node

{

int data[maxsize];

int len;

}nod;

int get(nod *la,int i)

{

return la->data[i];

}

void insert(nod *la,int x,int j)

{

int i;

for(i=length;i>=j;i--)

{

la->data[i+1]=la->data[i];

}

la->data[j]=x;

la->len++;

}

void Delete(nod* la,int i)

{

int j;

for(j=i+1;j<=12;j++)

la->data[j-1]=la->data[j];

la->len--;

}

int main()

{

nod la,lb;

memset(la.data,0,sizeof(la.data));

memset(lb.data,0,sizeof(lb.data));

int i,j;

for(i=1;i<=length;i++)

{

scanf("%d",&la.data[i]);

}

la.len=length;

lb.len=0;

i=j=1;

int x;

while(i<=la.len)

{

x=get(&la,i);

if(x%2==0)

{

insert(&lb,x,j);

j++;

Delete(&la,i);

}

else i++;

}

for(i=1;i<=la.len;i++)

printf("%d ",la.data[i]);

putchar(10);

for(i=1;i<=lb.len;i++)

printf("%d ",lb.data[i]);

return 0;

}

4.总结

第一次用typora写博客,一篇水文,当作试水吧。

标签:奇偶,lb,线性表,la,int,len,C语言,nod,data

来源: https://blog.csdn.net/weixin_43462804/article/details/112723271

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值