我有一个2-D字符数组,例如char aList[numStrings][maxLength]
.理想情况下,在程序执行期间,我希望能够修改aList的内容,即添加,修改或删除条目.由于aList可能会发生变化,因此我不想在每次修改aList之后重新编译我的程序.所以我想在程序结束时将aList写入文本文件,然后在下一个程序运行开始时将其读回aList.
但是,我不知道在程序启动时numStrings的值是多少.(我没有使用C99,所以我不能使用VLA,并从外部文件中获取先前字符串的数量.)当然,我可以将numStrings设置为人为的高值,但是那个格栅!
有没有办法在不知道numStrings值的情况下填充aList?我认为没有(我已经查看过相关问题),但还有另一种方法可以实现我的需求吗?
如果你真的想要从网格中间删除项目(你的问题不清楚),你需要某种多重链接结构.这些通常用于实现稀疏数组,因此您可能会找到一个预制数组.
我在谈论这样的事情:
+---+
| A |
+-|\+
| \
| \
| \
| \
| +----+----+----+
| | C0 | C1 | C2 | ...
| +--|-+----+--|-+
| | |
| | |
+-V--+ +--V-+ | +----+
| R0 |->|a0,0|-------+>|a0,3|--> ...
+----+ +--|-+ +--V-+----+
| R1 |-----+----->|a1,2|--> ...
+----+ | +--|-+
... V |
... V
...
Run Code Online (Sandbox Code Playgroud)
其中A是对象的根节点,C是列指针的数组,R是行指针的数组,并且每个单元沿其行和列指向它的下一个邻居.假定未明确表示的所有单元都具有一些默认值(通常为NULL或0).
这是一个简单的想法,但是相当挑剔的实现,有很多机会搞砸,所以如果可以,请使用调试库.
归档时间: |
|
查看次数: |
2898 次 |
最近记录: |