C语言,怎么在一轮循环中删除顺序表中多个负数
发布网友
发布时间:2022-05-04 12:25
我来回答
共3个回答
热心网友
时间:2022-06-21 21:32
采用前移法,或者重建法都可以。
1.前移法就是 while循环遍历顺序表,如果是负数,计数count++,如果是正数,前移count个单位(说明前面有count个负数)。
2.重建法就是如果是正数,count++(这里我count初始化为-1),前移到count的位置,负数不做处理。
最后通过length截断顺序表即可。
热心网友
时间:2022-06-21 21:32
顺序表 是数组 ?
那就使用数组拷贝的做法,循环中判断不是负数就拷贝到新的数组,否则跳过
~~~~~~
热心网友
时间:2022-06-21 21:33
#include<stdio.h>
#define MAXNUM 20
typedef struct
{
int data[MAXNUM];
int length;
}list;
void delen(list* a){
int newl[MAXNUM];
int p=0;
int newll=0;
for(;p<a->length;p++)
if(a->data[p]>0){
newl[newll]=a->data[p];
newll++;
}
p=0;
for(;p<newll;p++)
a->data[p]=newl[p];
a->length=newll;
}
楼上正解