作者jacky1989 ()
看板C_and_CPP
标题[闲聊] linked list重要性
时间Wed Dec 7 23:40:43 2016
如题
这篇纯闲聊,无学术交流,不喜者,现在就可以左转了
最近在工作上遇到一些比较麻烦的问题
我要去档案里抓一些特定的资料,但是我不知道这些资料到底有多少
因此我没办法预先设定阵列大小或变数多寡
这时候就突然想到,以前老师教的,资料串结(linked list)
就大家常看到的struct XXX{};
以前老师在教的时候,都不觉得这个有用
只觉得这到底要干嘛,啊我用阵列就好啦!!!
结果现在超常用到......
只能说,资料串结很有用,尤其面对未知的资料量时,整个大神的概念
就呼吁大家不要轻易放弃任何一种技术罗~~
因为你不知道哪一年的哪一天你会用到它
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.231.55.135
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1481125247.A.D2C.html
1F:推 chuegou: 可以抽掉中间的资料我觉的比较重要 12/07 23:45
就不用预先知道在哪里,只需要搜寻特定关键字就可以了
整个可以变成万用程式阿
2F:推 deo2000: 纯C的环境吗?要不然STL超好用 12/07 23:45
是纯C喔!!
※ 编辑: jacky1989 (61.231.55.135), 12/07/2016 23:47:01
3F:→ Caesar08: 没有要从中间插入,为什麽不动态宣告array? 12/07 23:53
因为就像你说的,有需要从中间插入的状况,我读的资料有可能不是连续性的
还有一个状况,我不知道到底需要读多少资料
这样是不是也可以用动态阵列呢?
※ 编辑: jacky1989 (61.231.55.135), 12/07/2016 23:57:04
4F:推 boss0405: 我是很常用cicular linked list来作queue,很方便 12/08 00:00
5F:→ Caesar08: 不知道size也可以动态宣告array。除非你要频繁的从中间 12/08 00:01
6F:→ Caesar08: 插入data,不然array(vector)会比list好很多 12/08 00:02
所以今天我有两个档案
第一个档案要读n笔资料
第二个档案要读m笔资料
我只知道每个资料的长度是20个byte,但是不知道n跟m为多少
我依然可以使用动态宣告来处理罗?
※ 编辑: jacky1989 (61.231.55.135), 12/08/2016 00:06:26
7F:→ Caesar08: 你用list不也是要额外allocate memory 12/08 00:33
8F:→ Caesar08: vector只不过是allocate比较多的memory罢了 12/08 00:34
嗯.....我用List还有另一个用意
因为我的资料是一堆小资料的集合,我认为用结构来处理比较合适
不过C大的建议,我会去survey一下
如果有疑问,还请C大不吝指教,感谢
※ 编辑: jacky1989 (61.231.55.135), 12/08/2016 00:35:29
9F:推 EdisonX: 结构也可以用成 array 型式 @@ 12/08 00:37
10F:→ firejox: 要多一点效率就固定多要一点记忆体 12/08 00:40
11F:→ firejox: 像STL的deque就是会固定多要一点(没记错的话 12/08 00:42
12F:→ Caesar08: MSVC与GCC的deque、vector都会allocate比要求的memory多 12/08 00:45
13F:→ Caesar08: 说错了,我说的是自动增长的情况,不是主动要求的情况 12/08 00:46
14F:→ firejox: allocate的量不一样阿deque跟vector,增长的时候 12/08 00:53
15F:推 stupid0319: 像是MMORPG,玩家跟怪物等都是用linked list来串连 12/08 01:02
16F:推 CoNsTaR: 要是你写 fp 语言你就会发现资料结构充满整个程式… 12/08 01:27
17F:→ CoNsTaR: 除了结构和函数之外没有其他东西 12/08 01:28
18F:→ CoNsTaR: 补充个,连 Int, Char 等等… 都是资料结构 12/08 13:12
19F:→ CoNsTaR: 没有 primitive type 这种东西 12/08 13:12