永发信息网

C语言结构数组删除!

答案:2  悬赏:50  手机版
解决时间 2021-01-22 19:28
  • 提问者网友:王者佥
  • 2021-01-22 08:53
C语言结构数组删除!
最佳答案
  • 五星知识达人网友:忘川信使
  • 2021-01-22 10:13
对于数组删除,一般就是使用后面数组元素前移的操作,来覆盖前一元素,达到删除的效果。。。。

例如数组a[10],要删除a[5]这个元素,那么只需要把后面的元素前移一位就行了,也就是a[5]=a[6],a[6]=a[7],a[7]=a[8],这样子a[5]这个元素的内容就会被全部抹杀掉了。。。。

不过这里存在一个问题,你一个结构体数组前移的时候,如何判断有多少个元素要前移呢。。。。

所以我的做法是在结构体里面定义一个标示符int flag。。。。

当对这个结构体数组元素赋值时,如a[10].name="KING" 时,那么就是说下标值为10的元素是存在的,赋完值后,来个a[10].flag=1 来标记一下。。。。

这样做的话,我们可以进行这样的删除操作了,如删除下标值为5的元素——
int i=5;
for(int j=i+1;a[j].flag==1;i++,j++)
{
a[i]=a[j];

}
a[i].flag=0;
全部回答
  • 1楼网友:不如潦草
  • 2021-01-22 11:18
删除操作错了吧!
你怎么把所的记录都复制到同一个记录 i 当中了。
后续的每个记录应该是全部向前一个啊,就是:
j=i; 之后 把记录j+1移动到j就行了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯