PJLIB库基础框架-数据结构之循环链表的使用
2013-04-24 13:09
489 查看
#include <stdio.h> #include <pjlib.h> #include <pj/types.h> // for pj_init. #define THIS_FILE "main.c" typedef struct MY_NODE { // This must be the first member declared in the struct! PJ_DECL_LIST_MEMBER(struct MY_NODE); int val; } MY_NODE; /* 循环链表测试 */ void list_test(void); /* 打印循环链表信息 */ void list_print(pj_list_type* node); int main(int argc, char** argv) { pj_status_t status; // pjlib库初始化 status = pj_init(); if (status != PJ_SUCCESS) { char errmsg[PJ_ERR_MSG_SIZE]; pj_strerror(status, errmsg, sizeof(errmsg)); PJ_LOG(1,(THIS_FILE, "%s: %s [status=%d]", pj_init, errmsg, status)); return -1; } // 循环链表测试 list_test(); // pjlib库关闭 pj_shutdown(); return 0; } /* 循环链表测试 */ void list_test(void) { int i; MY_NODE list; MY_NODE array[10]; // 初始化一个空链表 pj_list_init(&list); // 向链表插入节点 for (i=0; i<10; ++i) { array[i].val = i; pj_list_insert_before(&list, &array[i]); } // 打印循环链表信息 list_print(&list); // 删除链表中的节点 for (i=0; i<10; ++i) { pj_list_erase(&array[i]); } // 打印循环链表信息 list_print(&list); // 检查链表是否为空 pj_assert(pj_list_empty(&list)); } /* 打印循环链表信息 */ void list_print(pj_list_type* node) { int i; MY_NODE *it; MY_NODE *head; head = it = (MY_NODE *)node; if (it != NULL) { it = it->next; for (i=0; it != head; ++i) { PJ_LOG(3, (THIS_FILE, "node[%d] = %d", i, it->val)); it = it->next; } } }
相关文章推荐
- PJLIB库基础框架-数据结构之数组的使用
- PJLIB库基础框架-数据结构之字符串的使用
- 【程序员面试宝典】数据结构基础二单链表循环链表的操作 建立|插入删除|打印|合并
- 数据结构基础(12) --双向循环链表的设计与实现
- 数据结构基础(12) --双向循环链表的设计与实现
- 数据结构基础算法-循环链表
- 数据结构基础(11) --循环链表的设计与实现
- 数据结构中之单向循环链表的使用
- 数据结构基础(11) --循环链表的设计与实现
- 数据结构基础(11) --循环链表的设计与实现
- 数据结构基础(12) --双向循环链表的设计与实现
- .net 数据结构与算法基础:泛型链表使用
- 数据结构基础(12) --双向循环链表的设计与实现
- 数据结构基础-队列(循环队列、链式队列)以及STL中queue的使用
- 数据结构基础(12) --双向循环链表的设计与实现
- 数据结构基础(11) --循环链表的设计与实现
- ||OC||OC语言基础知识框架结构//个人整理使用|仅供参考|尚未整理完
- 数据结构基础(一):单链表 双链表 循环链表
- 【程序员面试宝典】数据结构基础1:链表
- 数据结构——双向循环链表——2016_11_14