c语言中有类似java中ArrayList和LinkedList的库或者第三方代码用吗?

wow334 2020-02-12 06:33:28

java中, 同一类的东西放在一个集合中很方便,比如一群狗 放在一起,一群人放在一起。在c语言中我要怎么把同一类的放在一起?


我现在弄的链表,它只能把同一类的东西放在一起,比如people,等我要把一些book放一起时,又要重新写一条book链表的增删改查,很麻烦啊

但是java中,一个ArrayList 或者 LinkedList,

它只要 ArrayList peopleList = new ArrayList ;
ArrayList bookList = new ArrayList
然后 peopleList 就可以存people , bookList就可以存book,完全不用为了book再写一条新链表。c语言中有类似java中ArrayList和LinkedList的库或者第三方代码用吗?
...全文
953 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
渝涅 2020-02-27
  • 打赏
  • 举报
回复
C需需要是面向过程的语言,没有面向对象那一套,有的只是函数和一堆数据类型,要学c就不要再用java的眼光去审视它,用面向过程的语言,就请先暂时忘记什么叫做面向对象。c语言有标准库,库里面都是函数,如果你想用arraylist这样的,就只能自己写结构体,将相关操作写成一个个函数。
  • 打赏
  • 举报
回复
自己写一个链表
CoderRuL 2020-02-19
  • 打赏
  • 举报
回复
评论区人人大牛,人家问你C又没问你C++,在那秀
akari10032 2020-02-19
  • 打赏
  • 举报
回复
内核链表了解一下,或者写个用 void* 存数据的
FlameAlpha 2020-02-18
  • 打赏
  • 举报
回复
c++ 的 boost库了解下
guoshaobao 2020-02-16
  • 打赏
  • 举报
回复
引用 楼主 wow334的回复:
java中, 同一类的东西放在一个集合中很方便,比如一群狗 放在一起,一群人放在一起。在c语言中我要怎么把同一类的放在一起?


我现在弄的链表,它只能把同一类的东西放在一起,比如people,等我要把一些book放一起时,又要重新写一条book链表的增删改查,很麻烦啊

但是java中,一个ArrayList 或者 LinkedList,

它只要 ArrayList peopleList = new ArrayList ;
ArrayList bookList = new ArrayList
然后 peopleList 就可以存people , bookList就可以存book,完全不用为了book再写一条新链表。c语言中有类似java中ArrayList和LinkedList的库或者第三方代码用吗?
C++标准库有很多,
xiaoxiangqing 2020-02-15
  • 打赏
  • 举报
回复
c语言应该没这种吧
捡破烂攻城狮 2020-02-15
  • 打赏
  • 举报
回复
引用 8 楼 寻开心的回复:
c也可以啊, 无非把里面的节点的数据类型设置成为void *呗
然后自己想怎么解释就做强制数据转换了
是这个理,我在网上找到过linkedlist,hasmap的c语言版本
mymtom 2020-02-14
  • 打赏
  • 举报
回复
1. libcstl
https://github.com/activesys/libcstl

2. glib2
https://developer.gnome.org/glib/2.26/glib-Doubly-Linked-Lists.html
宾灬 2020-02-14
  • 打赏
  • 举报
回复
直接自己写一个存void指针的list,不就行了,void 指针可以转成其他类型的指针。
ice forg 2020-02-14
  • 打赏
  • 举报
回复
应该改用java或者自己写结构然后想用的时候include一下
寻开心 2020-02-12
  • 打赏
  • 举报
回复
c标准定义在那里, 就是那样了, 在没有新标之前, c提供的就哪些
c++,java的标准里面,已经把template之类的东西都包含在里面, 所以变成了语言的直接支持部分
任何一个编译器自动支持

本质差异就在这儿, 因为只有一个c/c++的标准, 官方只有他, 其他的都不算官方
visual c++自己有一套mfc, 问题是dev c++认吗?
五花八门的编译器,哪一个算是正版官方? 都不是,都有自己的特点,也有自己的所谓官方工具包,但是都是针对特定的目标的
YapingXin 2020-02-12
  • 打赏
  • 举报
回复
有啊,去 github 上找一找,一大堆。
寻开心 2020-02-12
  • 打赏
  • 举报
回复
不是没有, 以前没有java 和 c++的时候,就是c的天下,软件包多多多的很
wow334 2020-02-12
  • 打赏
  • 举报
回复
谢谢大家!
我觉得奇怪的是java c++ 都有官方的, c怎么不弄个类似功能的官方版本呢?
wow334 2020-02-12
  • 打赏
  • 举报
回复
引用 8 楼 寻开心 的回复:
c也可以啊, 无非把里面的节点的数据类型设置成为void *呗
然后自己想怎么解释就做强制数据转换了


好的,我用void * 试下, 谢谢!
牛不才 2020-02-12
  • 打赏
  • 举报
回复
感觉这些东西都不需要库,从某些开源软件里摘除源码来就可以了。 比如cJson
gouyanfen 2020-02-12
  • 打赏
  • 举报
回复
引用 7 楼 wow334 的回复:
[quote=引用 6 楼 gouyanfen 的回复:] array<T,N> (数组容器) vector<T> (向量容器) deque<T> (双向队列容器) list<T> (链表容器) forward list<T> 都可以用啊 STL基础类就可以
这些是c语言可用使用的吗? 我需要c语言能用的。不是c++的[/quote] 简单的,重封装一下,编译成dll,或lib,纯C代表调用,然后用void *想怎么转都行
寻开心 2020-02-12
  • 打赏
  • 举报
回复
c也可以啊, 无非把里面的节点的数据类型设置成为void *呗
然后自己想怎么解释就做强制数据转换了

wow334 2020-02-12
  • 打赏
  • 举报
回复
引用 6 楼 gouyanfen 的回复:
array<T,N> (数组容器)
vector<T> (向量容器)
deque<T> (双向队列容器)
list<T> (链表容器)
forward list<T>
都可以用啊
STL基础类就可以


这些是c语言可用使用的吗? 我需要c语言能用的。不是c++的
加载更多回复(6)

70,022

社区成员

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

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