1、SAObject.hpp
[C++] 纯文本查看 复制代码 #ifndef SAObject_hpp
#define SAObject_hpp
#include <stdio.h>
// 声明主体对象结构体
struct SAObject{
int id;
char name[20];
SAObject *next;
};
// 1、DataStore中包含了一个固有的SAObject
// 2、SAObject的空间分配由DataStore来管理
struct DataStore{
SAObject header;
};
// 创建
DataStore *create();
// 新增元素
void add(DataStore *, const SAObject *);
// 销毁
void destroy(DataStore *);
#endif /* SAObject_hpp */ 2、SAObject.cpp[C++] 纯文本查看 复制代码 #include "SAObject.hpp"
#include <stdlib.h>
// 创建
DataStore *create()
{
DataStore *ds = (DataStore *)malloc(sizeof(DataStore));
ds->header.next = NULL;
return ds;
}
// 新增元素
void add(DataStore *ds, const SAObject *obj)
{
// 复制数据
SAObject *copy = (SAObject *)malloc(sizeof(SAObject));
*copy = *obj;
// 找到最后一个节点,添加新对象
SAObject *c = &ds->header;
while (c->next) {
c = c->next;
}
c->next = copy;
copy->next = NULL;
}
// 销毁
void destroy(DataStore *ds)
{
SAObject *obj = ds->header.next;
while (obj) {
SAObject *next = obj->next;
free(obj);
obj->next = NULL;
obj = next;
}
free(ds);
ds->header.next = NULL;
} 3、main.cpp[C++] 纯文本查看 复制代码 #include <stdio.h>
#include <stdlib.h>
#include "SAObject.hpp"
int main(int argc, char *argv[])
{
DataStore *ds = create();
SAObject obj1 = {1, "sian"};
add(ds, &obj1);
SAObject obj2 = {2, "jack"};
add(ds, &obj2);
destroy(ds);
return 0;
} |