| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 10380 人关注过本帖, 1 人收藏
标题:分享:通用链表(有任何问题或建议,请提出)(5.2新增两个函数)
取消只看楼主 加入收藏
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 19楼 xzlxzlxzl
我只是改了测试用的main()函数,毕竟用另一个结构来测试不限制类型在打印方面有点不好看,改成int类型,看起来比较好看。
主要是为了测试First() 和DelFirst()两个新函数。

用int类型,可以在一排打印,比较容易、清晰的看到变化。

[此贴子已经被作者于2017-4-27 21:28编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-27 21:26
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 19楼 xzlxzlxzl
实现文件和main()函数同时编译。

在main()函数中 #include 接口。

我的这个还比较初级,我还没学会编译成动态链接或静态链接,那样的话,使用起来就跟标准库函数一样了,只需要#include 头文件,不再需要同时编译实现文件。

我举例说明一下:

这里有3个文件,1个是GenericityList.h,一个是GenericityList.c, 一个是ceshi2.c(也就是那个测试)
用gcc是这样编译的
gcc -Wall ceshi2.c GenericityList.c -o ceshi2

用VS的话,你需要建立3个源文件,一个是ceshi2.c,一个是GenericityList.c,一个GenericityList.h,然后点击生成就可以了。

注意一点,ceshi2.c 和 List.c 文件中,必须#include "List.h",否则无法使用这些链表函数,也不能声明List类型的变量。

[此贴子已经被作者于2017-4-27 21:47编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-27 21:30
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 24楼 xzlxzlxzl
你#include "GenericityList.h"了吗?如果这样写的话,你必须把GenericityList.h 和GenericityList.c 放在你的项目的同目录下。
当然你也可以#include "x:\....\GenericityList.h",这样就不需要放在项目的同目录下了。

你稍微等等,我打开Vs2015,建立一个项目,截图给你。

我说stdio.h这个,只是一个例子,只是告诉你,应该这样使用。
stdio.h的实现文件是动态链接的,所以你不需要同时编译它的实现文件。


[此贴子已经被作者于2017-4-27 21:51编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-27 21:48
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


好久不用VS2015了,都不会用了。

添加——现有项,选择GenerictyList.h 和 GenericityList.c 就可以了。


[此贴子已经被作者于2017-4-27 21:59编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-27 21:58
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
Vs2015跟我的GCC应该冲突了,我看不到代码,但是编译却是可以。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-27 22:02
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
    Root = MakeEmpty( Root );

记得删除main()函数中的这一句,MakeEmpty()这个函数已经被我删除了,这个函数还不够完善。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-27 22:07
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


我用VS2015编译,0警告,0错误的。

[此贴子已经被作者于2017-4-27 22:20编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-27 22:17
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 30楼 九转星河
如果作为队列或栈来使用,有一个不大不小的问题,那就是数据没有封装,使用者可以触碰到数据,并且修改他们。
避免用户触碰数据的做法有两个,第一那就是将数据跟函数绑在一起,不允许用户访问它们;第二个做法,要求实现和接口彻底分离,在头文件中,数据类型是一个typedef定义的别名,数据类型的定义是在实现文件中完成的,由于使用者不知道这个结构的具体信息,因此也就无法访问它们了。

例如:接口中的声明如下
typedef struct Stack_T *Stack_T;

实现文件中才对这个结构进行定义
struct Stack_T {
XXXXXXXXXXXXXX;
};

为什么不在接口中对结构进行完整的定义呢?因为使用者是可以看见的,犹如可以看见stdio.h中定义的FILE类型的结构的具体信息。(当然这是对于栈和队列而言的,某些抽象数据类型披露具体信息反而是有好处的。)

PS:有两处Warning:(马丹:165、173行在哪儿。)
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2017-4-29 17:55编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-29 17:49
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
@九转星河
你在修改函数吗?为什么我复制下来的Print_List()和PrintIn_List() 和现在帖子中的不一样?

大致稳定了,告诉我一声?

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-29 18:00
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 33楼 九转星河
那就用第二个办法呗,隐藏结构的具体信息。

点支烟,泡杯茶,慢慢看。

[此贴子已经被作者于2017-4-29 18:15编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-29 18:05
快速回复:分享:通用链表(有任何问题或建议,请提出)(5.2新增两个函数)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015476 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved