编程点滴:ADT抽象数据类型的实现(链式存储线性表C语言描述)(3)

2019-01-18 22:01

/* Name: test.c * Desc: C语言ADT(抽象数据类型)的实现测试程序 * Author: Joshua Chan * Date: 2011-11-03 */ #include #include #include\ /* 用户自定义结构 */ structinfo_st{ int id; char name[20]; int age; }; /* 用户自定义比较函数 */ intcomp_id(void*data1,void*data2) { structinfo_st*a = data1; structinfo_st*b = data2; if(a->id == b->id) return0; return(a->id > b->id)?1:-1; } /* 用户自定义比较函数 */ intcomp_name(void*data1,void*data2) { structinfo_st*a = data1; structinfo_st*b = data2; returnstrcmp(a->name, b->name); } /* 用户自定义比较函数 */ intcomp_age(void*data1,void*data2) { structinfo_st*a = data1; structinfo_st*b = data2; if(a->age == b->age) return0; return(a->age > b->age)?1:-1; } /* 用户自定义操作函数 */ voidproc_print(void*data) { structinfo_st*a = data; printf(\, a->id, a->name, a->age); } voidprint_title(void) { printf(\); } structinfo_stput_data(int id,char*name,int age) { structinfo_stnew; new.id = id; strcpy(new.name, name); new.age= age; returnnew; } /* 测试程序 */ int main(void) { LIST_T l; structinfo_sti; l =list_init(sizeof(structinfo_st)); /* 追加5条记录 */ i=put_data(3,\,20); list_append(l,&i); i=put_data(5,\,43); list_append(l,&i); i=put_data(7,\,3); list_append(l,&i); i=put_data(9,\,14); list_append(l,&i); i=put_data(11,\,28); list_append(l,&i); /* 遍历结构, 同时调用给定的函数 */ printf(\); print_title(); list_travel(l,proc_print); /* 在前端加入1条记录, 并查看效果 */ i=put_data(4,\,59); list_prepend(l,&i); printf(\); print_title(); list_travel(l,proc_print); /* 在指定位置加入1条记录 */ i=put_data(2,\,33); list_putpos(l,&i,2); printf(\); print_title(); list_travel(l,proc_print); /* 取出指定位置的记录, 并显示 */ i=*(structinfo_st*)list_getpos(l,3); printf(\); print_title(); proc_print(&i); /* 查找符合条件的记录, 并显示 */ i=put_data(0,\,0); i=*(structinfo_st*)list_find(l,comp_name,&i); printf(\); print_title(); proc_print(&i); /* 按name升序排序 */ list_sort(l,comp_name,true); printf(\); print_title(); list_travel(l,proc_print); /* 按age降序排序 */ list_sort(l,comp_age,false); printf(\); print_title(); list_travel(l,proc_print); /* 自动按age顺序将记录加入到合适的位置 */ i=put_data(1,\,30); list_putif(l,comp_age,&i,false); printf(\); print_title(); list_travel(l,proc_print); /* 按id升序排序 */ list_sort(l,comp_id,true); printf(\); print_title(); list_travel(l,proc_print); /* 删除指定位置记录 */ list_delete_pos(l,3); printf(\); print_title(); list_travel(l,proc_print); /* 删除符合条件的记录 */ i=put_data(0,\,0); list_delete(l,comp_name,&i); printf(\); print_title(); list_travel(l,proc_print); /* 结构销毁, 释放空间 */ list_release(l); return0; }


编程点滴:ADT抽象数据类型的实现(链式存储线性表C语言描述)(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2013年(上)全国信息技术水平考试数据库应用系统设计技术水平证书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: