设为首页 加入收藏

TOP

C语言面向对象编程(五):单链表实现(四)
2014-11-23 20:15:39 来源: 作者: 【 】 浏览:32
Tags:语言 面向 对象 编程 单链表 实现
t, 10); printf(" node 10 was removed, check node 10 again:\n"); bn = list->at(list, 10); node = NODE_T(bn, struct int_node); printf(" now node 10 is: %d\n------\n", node->id); printf("replace test, replace node 12 with id 1200:\n"); bn = list->at(list, 12); node = NODE_T(bn, struct int_node); printf(" now node 12 is : %d\n", node->id); node = (struct int_node*)malloc(sizeof(struct int_node)); node->id = 1200; list->replace(list, 12, node); bn = list->at(list, 12); node = NODE_T(bn, struct int_node); printf(" replaced, now node 12 is : %d\n----\n", node->id); printf("test remove:\n"); ST_CALL(list, remove, bn); bn = ST_CALL(list, find_by_key, (void*)1200); assert(bn == 0); printf("test remove ok\n----\n"); printf("test remove_by_key(90):\n"); ST_CALL(list, remove_by_key, (void*)90); bn = ST_CALL(list, find_by_key, (void*)90); assert(bn == 0); printf("test remove_by_key(90) end\n----\n"); printf("test take_at(80):\n"); bn = ST_CALL(list, take_at, 80); printf(" node 80 is: %d\n", NODE_T(bn, struct int_node)->id); free(bn); printf("test take_at(80) end\n"); int_free_flag = 0; printf("delete list && nodes:\n"); list->deletor(list); printf("delete list && nodes end\n"); printf("\n test add/insert/remove/delete/find_by_key/replace...\n"); } void string_slist_test() { struct single_list * list = new_single_list(_string_child_free, _string_slist_hittest); } void slist_test() { int_slist_test(); string_slist_test(); }
测试代码里主要演示了:

自定义链表节点类型定义释放回调定义用于查找的 hit test 回调如何创建链表如何使用( add 、remove 、 take 、find 、 insert 等)

相信到这里,单链表的使用已经不成问题了。

以单链表为基础,可以进一步实现很多数据结构,比如树(兄弟孩子表示法),比如 key-value 链表等等。接下来根据例子的需要,会择机进行展示。


首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C指针原理(59)-Ncurses-文本终端.. 下一篇C指针原理(60)-Ncurses-文本终端..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: