dasdas
来源:互联网 发布:linux查看目录下文件 编辑:程序博客网 时间:2024/06/10 21:11
#include <stdio.h>
#include "list.h"
//测试数据结构
typedef struct student{
char name[20];
char gender[20];
int height;
int weight
}stu;
//显示(打印)链表数据
/*
void handle(void *data)
{
stu *test = (stu *)data;
printf("Name:%d, gender:%f\n", test->name, test->gender);
}
//比较两个数据的大小
int compare_int(const void *s1, const void *s2)
{
stu *data1 = (stu *)s1;
int *data2 =(int *)s2;
return (data1->val1 - *data2);
}
//排序比较大小
int compare_int_sort(const void *s1, const void *s2)
{
test_t *data1 = (test_t *)s1;
test_t *data2 = (test_t *)s2;
return (data1->val1 - data2->val1);
}
//打印链表
void print(List *list)
{
printf("list len = %ld\n", list_get_lenth(list));
if(!is_empty(list)){
//test list_reverse
list_traverse(list, handle);
}
else{
printf("\tthe list is empty\n");
}
}
*/
int main(void)
{
//打开数据文件
//FILE *fp ;
char ch ;
int i ;
//实例化List链表
// List list;
//初始化链表
// list_init(&list);
//测试数据test_t定义
stu student[5];
stu *pst,*qst ;
pst = &student ;
qst = &student ;
char buffer[1000];
/*
stu student1 = {"LiMing", "male",173,80};
stu student2 = {"tommy", "male",178,79};
stu student3 = {"tom", "male",178,79};
stu student4 = {"Hanmei", "female",170,60};
stu student5 = {"Jim", "male",178,79};
*/
//读取数据
if((fp=fopen("data.cfg","wb+"))==NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
printf("read student information from the data file ");
fread( buffer , file_size , sizeof(char) , fp);
for(i=0;i<5;i++,pst++)
fscanf(fp,"%s/n%s %d %d",pst->name,pst->gender,&pst->height,&pst->weight);
pst = &student ;
for(i=0;i<5;i++,pst++)
printf("%s %s %d %d",pst->name,pst->gender,pst->height,pst->weight);
fclose(fp);
//test_t test2 = {20, 20.5};
// test_t test3 = {30, 30.5};
//test_t test4 = {40, 40.5};
//test_t test5 = {50, 50.5};
/*
//默认从尾部插入tail
//test list_insert
printf("------insert(_at_tail)----\n");
list_insert(&list, &student1);
list_insert(&list, &student2);
list_insert(&list, &student3);
list_insert(&list, &student4);
list_insert(&list, &student5);
print(&list);
//删除
//test list_delete
printf("------delete----\n");
list_delete(&list, &test1.val1, compare_int);//函数指针compare_init
print(&list);
//test list_insert_at_head
printf("------insert_at_head----\n");
list_insert_at_head(&list, &test4);
print(&list);
//test list_insert_at_index
printf("------insert_at_index(2)----\n");
list_insert_at_index(&list, &test5, 2);
print(&list);
//test list_reverse
printf("------reverse----\n");
list_reverse(&list);
print(&list);
//test list_search
int key = 20;
test_t *ret;
printf("------search----\n");
ret = list_search(&list, &key, compare_int);
printf("%d:%f\n", ret->val1, ret->val2);
key = 50;
ret = list_search(&list, &key, compare_int);
printf("%d:%f\n", ret->val1, ret->val2);
//test list_get_element
printf("------list_get_element----\n");
ret = list_get_element(&list, 2);
printf("%d:%f\n", ret->val1, ret->val2);
ret = list_get_element(&list, 3);
printf("%d:%f\n", ret->val1, ret->val2);
//test list_sort
printf("-----sort----\n");
list_sort(&list, compare_int_sort);
print(&list);
//test if list is empty\n
printf("-----check is_empty------");
if(!is_empty(&list))
{
printf("list is not empty\n");
printf("list len = %ld\n", list_get_lenth(&list));
}
//test list_destroy
printf("-----destroy----\n");
list_destroy(&list, NULL);
//test is_empty
printf("-----is_empty------");
if(!is_empty(&list))
{
printf("list is not empty\n");
printf("list len = %ld\n", list_get_lenth(&list));
}
*/
return 0;
}
#include "list.h"
//测试数据结构
typedef struct student{
char name[20];
char gender[20];
int height;
int weight
}stu;
//显示(打印)链表数据
/*
void handle(void *data)
{
stu *test = (stu *)data;
printf("Name:%d, gender:%f\n", test->name, test->gender);
}
//比较两个数据的大小
int compare_int(const void *s1, const void *s2)
{
stu *data1 = (stu *)s1;
int *data2 =(int *)s2;
return (data1->val1 - *data2);
}
//排序比较大小
int compare_int_sort(const void *s1, const void *s2)
{
test_t *data1 = (test_t *)s1;
test_t *data2 = (test_t *)s2;
return (data1->val1 - data2->val1);
}
//打印链表
void print(List *list)
{
printf("list len = %ld\n", list_get_lenth(list));
if(!is_empty(list)){
//test list_reverse
list_traverse(list, handle);
}
else{
printf("\tthe list is empty\n");
}
}
*/
int main(void)
{
//打开数据文件
//FILE *fp ;
char ch ;
int i ;
//实例化List链表
// List list;
//初始化链表
// list_init(&list);
//测试数据test_t定义
stu student[5];
stu *pst,*qst ;
pst = &student ;
qst = &student ;
char buffer[1000];
/*
stu student1 = {"LiMing", "male",173,80};
stu student2 = {"tommy", "male",178,79};
stu student3 = {"tom", "male",178,79};
stu student4 = {"Hanmei", "female",170,60};
stu student5 = {"Jim", "male",178,79};
*/
//读取数据
if((fp=fopen("data.cfg","wb+"))==NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
printf("read student information from the data file ");
fread( buffer , file_size , sizeof(char) , fp);
for(i=0;i<5;i++,pst++)
fscanf(fp,"%s/n%s %d %d",pst->name,pst->gender,&pst->height,&pst->weight);
pst = &student ;
for(i=0;i<5;i++,pst++)
printf("%s %s %d %d",pst->name,pst->gender,pst->height,pst->weight);
fclose(fp);
//test_t test2 = {20, 20.5};
// test_t test3 = {30, 30.5};
//test_t test4 = {40, 40.5};
//test_t test5 = {50, 50.5};
/*
//默认从尾部插入tail
//test list_insert
printf("------insert(_at_tail)----\n");
list_insert(&list, &student1);
list_insert(&list, &student2);
list_insert(&list, &student3);
list_insert(&list, &student4);
list_insert(&list, &student5);
print(&list);
//删除
//test list_delete
printf("------delete----\n");
list_delete(&list, &test1.val1, compare_int);//函数指针compare_init
print(&list);
//test list_insert_at_head
printf("------insert_at_head----\n");
list_insert_at_head(&list, &test4);
print(&list);
//test list_insert_at_index
printf("------insert_at_index(2)----\n");
list_insert_at_index(&list, &test5, 2);
print(&list);
//test list_reverse
printf("------reverse----\n");
list_reverse(&list);
print(&list);
//test list_search
int key = 20;
test_t *ret;
printf("------search----\n");
ret = list_search(&list, &key, compare_int);
printf("%d:%f\n", ret->val1, ret->val2);
key = 50;
ret = list_search(&list, &key, compare_int);
printf("%d:%f\n", ret->val1, ret->val2);
//test list_get_element
printf("------list_get_element----\n");
ret = list_get_element(&list, 2);
printf("%d:%f\n", ret->val1, ret->val2);
ret = list_get_element(&list, 3);
printf("%d:%f\n", ret->val1, ret->val2);
//test list_sort
printf("-----sort----\n");
list_sort(&list, compare_int_sort);
print(&list);
//test if list is empty\n
printf("-----check is_empty------");
if(!is_empty(&list))
{
printf("list is not empty\n");
printf("list len = %ld\n", list_get_lenth(&list));
}
//test list_destroy
printf("-----destroy----\n");
list_destroy(&list, NULL);
//test is_empty
printf("-----is_empty------");
if(!is_empty(&list))
{
printf("list is not empty\n");
printf("list len = %ld\n", list_get_lenth(&list));
}
*/
return 0;
}
0 0