本文共 5431 字,大约阅读时间需要 18 分钟。
1 #include2 #include 3 #include 4 #include 5 6 #define sk_student_new(st) SKM_sk_new(student, (st)) 7 #define sk_student_new_null() SKM_sk_new_null(student) 8 #define sk_student_free(st) SKM_sk_free(student, (st)) 9 #define sk_student_num(st) SKM_sk_num(student, (st))10 #define sk_student_value(st, i) SKM_sk_value(student, (st), (i))11 #define sk_student_set(st, i, val) SKM_sk_set(student, (st), (i), (val))12 #define sk_student_zero(st) SKM_sk_zero(student, (st))13 #define sk_student_push(st, val) SKM_sk_push(student, (st), (val))14 #define sk_student_unshift(st, val) SKM_sk_unshift(student, (st), (val))15 #define sk_student_find(st, val) SKM_sk_find(student, (st), (val))16 #define sk_student_delete(st, i) SKM_sk_delete(student, (st), (i))17 #define sk_student_delete_ptr(st, ptr) SKM_sk_delete_ptr(student, (st), (ptr))18 #define sk_student_insert(st, val, i) SKM_sk_insert(student, (st), (val), (i))19 #define sk_student_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(student, (st), (cmp))20 #define sk_student_dup(st) SKM_sk_dup(student, st)21 #define sk_student_pop_free(st, free_func) SKM_sk_pop_free(student, (st), (free_func))22 #define sk_student_shift(st) SKM_sk_shift(student, (st))23 #define sk_student_pop(st) SKM_sk_pop(student, (st))24 #define sk_student_sort(st) SKM_sk_sort(student, (st))25 26 27 typedef struct student_st28 {29 char *name;30 int age;31 char *otherInfo;32 }student;33 34 typedef STACK_OF(student) students;35 36 student *student_malloc()37 {38 student *a = malloc(sizeof(student));39 a->name = malloc(20);40 strcpy(a->name, "zcp");41 a->otherInfo = malloc(20);42 strcpy(a->otherInfo, "no info");43 return a;44 }45 46 47 void student_free(student *a)48 {49 free(a->name);50 free(a->otherInfo);51 free(a);52 }53 54 static int student_cmp(student *a, student *b)55 {56 int ret;57 ret = strcmp(a->name, b->name);58 return ret;59 }60 61 int main(int argc, char *argv)62 {63 students *s, *snew;64 student *s1, *one, *s2;65 int i, num;66 67 s = sk_student_new_null();68 s2 = student_malloc();69 sk_student_push(snew, s2);70 i = sk_student_find(snew, s2);71 s1 = student_malloc();72 sk_student_push(s, s1);73 num = sk_student_num(s);74 75 for (i = 0; i < num; i++)76 {77 one = sk_student_value(s,i);78 printf("student name: %s \n", one->name);79 printf("student age: %d \n", one->age);80 printf("student otherinfo: %s\n\n\n", one->otherInfo);81 }82 83 sk_student_pop_free(s, student_free);84 sk_student_pop_free(snew, student_free);85 return 0;86 }
转载地址:http://fmwdb.baihongyu.com/