繁体   English   中英

从C中的动态数组列表中删除一项

[英]Removing an item from a Dynamic Array List in C

我试图通过编写一些简单程序来习惯于编写C,我想尝试用C编写动态数组列表。到目前为止,它可以工作,但是我不确定要如何执行remove项。 , 例如:

有一个包含一些值的列表,例如:

index   value
0       "a"
1       "b"
2       "c"
3       "d"

假设我要删除索引2 remove_item(list, 2)的值,则值将如下所示:

index   value
0       "a"
1       "b"
2       NULL
3       "d"

但这可能会给我带来一些不确定的行为,这并不理想。 所以我的问题是,我该如何移动数据以填补空白,例如,删除索引为2的数据将其移动:

index   value
0       "a"
1       "b"
2       "d"

编辑 :我已经实现了第二个示例,但是我不确定如何使它像示例3所示那样运行。程序结构非常简单:

typedef struct ArrayList {
    int array_size;
    void **items;
} ArrayList;

任何帮助都是极好的 :)

index   value
0       "a"
1       "b"
2       "c"
3       "d"

调用remove_item(list, 2);

现在您的列表应如下所示:

index   value
0       "a"
1       "b"
2       "d"

换句话说,每个索引实际上代表一个节点。 您希望删除索引为2的节点(也可以说id)。2.删除索引为2的节点。 现在,您实际上将节点1与节点3连接起来。但是,由于索引是递增的,因此将下一个节点的索引减小1,因此3变为2。

当我在第一学期时,教授通过代码向我们教授了简单的链表。 这对我真的很有帮助。 确保您阅读了评论。 通过发布此链接,这意味着我相信您不只是想做些硬件,而是要学习。 :)并不是您所实现的完全是什么,但是它可以使您的想法付诸实践。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM