我想用C写一个常用的数据结构操作库,有多少人觉得有必要么?

linxren 2013-10-03 09:36:52
比如:
栈,链表(单项,双向,循环),树(红黑树,B树),Hash表,等等

多少人觉得有需要,如果没人觉得有必要,我就不写了,呵呵。
我不想写一个很庞大的库,希望做到每种数据结构代码都很独立,这样子别人用的时候,可以直接挑出来其中的一两种代码直接进行使用。
...全文
403 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-10-08
  • 打赏
  • 举报
回复
建议帖主先通读STL源代码。
booirror 2013-10-07
  • 打赏
  • 举报
回复
非常有必要啊
木犀花香 2013-10-05
  • 打赏
  • 举报
回复
有必要,练就一身过硬的好本领!
善良超锅锅 2013-10-05
  • 打赏
  • 举报
回复
我自己写过栈 队列 树 之类的 感觉有收获。
stereoMatching 2013-10-05
  • 打赏
  • 举报
回复
如果各方面都能比现在的主流编译器(gcc, clang, vc++)附带的stl强,我保证会有很多人用 这包括稳定性,运行期效率,可复用性及灵活度 稳定性是基本要求,最难的是如何同时兼顾运行期效率 可复用性及灵活度 首先c在resource management上总是需要用到goto 不使用goto程式反而很难维护

stack_int *intStack = generate_stack_int();
//......
freeResource :
    release_int_stack(intStack);
    //.....
第二个问题,你要用void*还是macro实现你的资料结构? 用void*先天上执行速度就较慢 而且一直cast来cast去的,这api也太难用了,不是type safe的,不安全也不方便 假设你使用macro产生stack_int, stack_double, stack_long等type 如果有一天我需要的是stack_image, stack_human, stack_bmp呢? 难道要我自行用你提供的macro产生stack_image,stack_human, stack_bmp吗? 这样一来的话不是很容易发生name collision,甚至是重复的代码吗? 而且使用macro还有一个问题,就是所有我不需要的api都会被编译成binary codes 这间接加剧了code bloat的问题,你要如何让这些资料结构和stl一样 跟template一样只把我需要用到的api编译成binary codes? 用c实现通用的data structures,问题还远不只是这些 不过最难的问题我想还是出在两个地方 第一 : 没有destructor == 不支援RAII 第二 : 没有template == 不支援generic programming 顶多只能用macro辅以一堆人类很难理解的奇技淫巧来模拟template的功能 这点跟c++本来就不支援metaprogramming,结果我们只能用一堆奇技淫巧来实现的道理一样
猫仔- 2013-10-05
  • 打赏
  • 举报
回复
这个看人的。。。有的人领的工资很高,有的干了那么久工资还是4000上下!
PonyCheng2019 2013-10-04
  • 打赏
  • 举报
回复
如果是要学习数据数据结构的话,自己写会收获很大的,如果是要在工作中用的话,我觉得有些库还是比较好的。。。
linxren 2013-10-04
  • 打赏
  • 举报
回复
OK,不写了,不是为了练手~
qq120848369 2013-10-03
  • 打赏
  • 举报
回复
自己的代码库通常只有自己愿意用,别人是没心思看的。 这种开源库你去看glib,或者更多的去oschina里翻一翻外国的C/C++开源项目,它们实现的肯定是很优秀的,很多你不了解的东西。 如果是工作用途或者开源项目,可以考虑C++算法和容器,保证可靠和简单。
aizibion 2013-10-03
  • 打赏
  • 举报
回复
对自己很必要:实践出真知 对别人也很重要:能力的提高可以带动一批人提高,东西写得好作用更大。
AnYidan 2013-10-03
  • 打赏
  • 举报
回复
lz 有想法
lm_whales 2013-10-03
  • 打赏
  • 举报
回复
C 基本写不了,因为C没有模板,很难做到通用数据结构。 不过你可以每种都实现一个。 写一个实现,然后用宏定义来处理每种类型
一根烂笔头 2013-10-03
  • 打赏
  • 举报
回复
对自己很必要,提升技能与加深理解;对别人没有必要,有开源的代码!如果你数据结构学的不好,也是一个很好锻炼!如果已经相当棒了,那就别浪费那个时间了
OpenKui 2013-10-03
  • 打赏
  • 举报
回复
好像已经有了好的开源算法项目了吧
2024 年 Uber 乘车分析数据集 这个综合数据集包含 2024 年 Uber 运营的详细拼车数据,提供了有关预订模式、车辆性能、收入流、取消行为和客户满意度指标的丰富见解。 数据集概述 该数据集捕获了多种车辆类型的 148,770 个总预订,并提供了拼车作的完整视图,包括成功乘车、取消、客户行为和财务指标。 主要统计数据: 总预订量:148.77K 次乘车 成功率:65.96%(93K 完成骑行) 取消率:25%(37.43K 取消预订) 客户取消:19.15%(27K 乘车) 司机取消: 7.45% (10.5K 乘车) 数据模式 数据集包含以下列: 列名称 描述 Date 预订日期 Time 预订时间 Booking ID 每次行程预订的唯一标识符 Booking Status 预订状态(已完成、客户取消、司机取消等) Customer ID 客户的唯一标识符 Vehicle Type 车辆类型(Go Mini、Go Sedan、Auto、eBike/Bike、UberXL、Premier Sedan) Pickup Location 游乐设施的起点 Drop Location 乘车目的地 Avg VTAT 司机到达上车地点的平均时间(以分钟为单位) Avg CTAT 从取件到目的地的平均行程时间(以分钟为单位) Cancelled Rides by Customer 客户发起的取消标志 Reason for cancelling by Customer 客户取消原因 Cancelled Rides by Driver 驱动程序启动的取消标志 Driver Cancellation Reason 司机取消原因 Incomplete Rides 未完成骑行标志 Incomplete Rides Reason 不完整骑行的原因

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧