数据结构-通用结构
来源:互联网 发布:淘宝助理教程视频 编辑:程序博客网 时间:2024/06/06 12:35
本文转载http://blog.csdn.net/feixiaoxing/article/details/6957546
我们知道在c++里面,既有数据又有函数,所以一个class就能干很多事情。举一个简单的例子来说,我们可以编写一个数据的class计算类。
- class calculate{
- int m;
- int n;
- public:
- calculate():m(0),n(0) {}
- calculate(int a, int b):m(a),n(b) {}
- ~calculate() {}
- int add() { return m+n; }
- int sub() { return m-n; }
- int mul() { return m *n;}
- int div() { return (n!=0) ?m /n : -1;}
- };
- typedef struct _QUEUE
- {
- int start;
- int end;
- int length;
- int count;
- void** head;
- int (*compare)(void*, void*);
- void (*print)(void*);
- void* (*find)(void*, void*);
- }QUEUE;
- QUEUE* create_new_queue(int length)
- {
- QUEUE* pQueue;
- if(0 == length)
- return NULL;
- pQueue = (QUEUE*)malloc(sizeof(QUEUE));
- assert(NULL != pQueue);
- pQueue->head = (void**)malloc(sizeof(void*)* length);
- assert(NULL != pQueue->head);
- pQueue->start = 0;
- pQueue->end = 0;
- pQueue->count = 0;
- pQueue->length = length;
- pQueue->compare = compare;
- pQueue->find = find;
- pQueue->print = print;
- return pQueue;
- }
有了函数指针之后,整个数据结构显得有点复杂。但是我们没有办法,这是设计通用数据结构必须花的一个代价。那么有了这个数据结构之后,如何才能实现对整个队列的数据打印呢?朋友们可以自己写一下,再看看我写的是否正确。
- void print_value_in_queue(QUEUE* pQueue)
- {
- int index ;
- int end;
- if(NULL == pQueue || 0 == pQueue->count)
- return;
- end = pQueue->start;
- if(end < pQueue->end)
- end = pQueue->end + pQueue->length;
- for(index = pQueue->start; index < end; index ++){
- pQueue->print(pQueue->head[index % pQueue->length]);
- }
- return;
- }
总结:
(1)剩下还有compare、find两个子函数,朋友们可以想想怎么利用?
(2)通用数据结构有很多好处,写的越熟,用得越好。
0 0
- 数据结构-通用结构
- 通用数据结构
- 通用数据结构
- 数据结构-通用算法
- 数据结构之通用双端链表
- 数据结构5.通用栈
- 数据结构6.通用队列
- 数据结构通用树
- 数据结构之通用树
- 数据结构之通用树
- 通用数据结构关系
- 数据结构 - 结构
- 通用结构复制函数
- 自定义结构---通用菜单
- 通用数据存储结构
- 数据结构之通用树(使用链表实现树的存储结构,双亲孩子表示法)
- 通用 求解 数据结构 size 函数
- C++中实现通用数据结构
- 按键驱动的恩恩怨怨之中断方式
- Quad Tiling
- linux必知会之文件操作
- 为什么csdn上传的头像是扁的捏?
- web.xml中的多个filter的运行顺序
- 数据结构-通用结构
- spring容器的懒加载lazy-init设置
- 我的软考之路(四)——数据结构与算法(2)之树与二叉树
- 7.栈的应用-四则运算算术表达式求解(算符优先法)
- Linked List Cycle
- 第五周作业--有向图邻接表表示及反向图构造
- 设计模式之解释器
- 大数相加
- delphi多线程编程