一个小功能,用数组还是链表实现好?

2017-08-23 11:22:05 +08:00
 noah1987
我们公司是做自动售货机刷卡器的。客户刷银行卡买东西。
在使用被盗的银行卡时,为了减少损失,打算实现一个每张卡每天最多在同一个机器上刷 5 次的功能。
每台机器每天最多的刷卡数不会超过 100。
机器里在跑 c 语言程序。怎么在机器上实现比较好?
1.直接全局变量一个长度 100 的结构体数组。结构里是有卡号和刷卡次数。每次刷卡时遍历数组。
2.实现一个链表。刷卡时遍历,没有记录就 malloc 内存增加节点。

怎么实现比较好?
2496 次点击
所在节点    程序员
11 条回复
jlsk
2017-08-23 11:32:56 +08:00
用 std::map,什么年代了还重复造轮子
noah1987
2017-08-23 11:35:58 +08:00
@jlsk c,不是 c++
RLib
2017-08-23 11:37:49 +08:00
sys/queue.h
swulling
2017-08-23 11:42:34 +08:00
放内存,机器重启了不就清空了么
noah1987
2017-08-23 11:51:10 +08:00
@swulling 这不是问题。不大在乎这个。
goodspb
2017-08-23 11:54:11 +08:00
题主现在担心的问题是?
leewangyang
2017-08-23 12:00:28 +08:00
不太懂关注点在哪。。。效率么?反正都是遍历,空间麽?链表的空间极限状况还要用多一些,100 个应该也不用担心空间不足问题。唯一的问题是,100 这个数字只是目前的情况吧,以后如果确定肯定不会变就数组呗,要是会变而且增多到多少不能确定就链表呗
NoAnyLove
2017-08-23 12:05:02 +08:00
所以机器到底是什么样的机器?接近普通 PC 的处理能力和内存?还是说是嵌入式设备?是运算能力比较弱的机器?还是内存比较小的机器?处理能力和内存大概是个什么水平?用的什么编译器?这些基本条件需要给够啊。

你如果内存够大,顺便分配,那当然搞个大数组没问题;你如果内存紧张,那当然又不同了。如果接近 PC 的运算能力,那你想怎么弄都行。

另外,你这么肯定刷卡次数不会超过 100 ?万一超过了怎么办?
gnaggnoyil
2017-08-23 12:32:57 +08:00
@noah1987 那就自己手动实现一个 map.反正都用 C 了那肯定是不在乎开发效率了对吧……
noah1987
2017-08-23 12:49:05 +08:00
跟老板商量了下改变实现方式了。
一个数组记录最近 5 张卡,重复多的拒绝。
sampeng
2017-08-23 20:00:25 +08:00
长度 100.。有什么纠结的。。1000-10000 都在现代计算机上都没什么纠结的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/385112

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX