首页 > 其他 > 详细

用函数调用实现冒泡函数与函数指针的使用

时间:2015-03-26 20:32:18      阅读:203      评论:0      收藏:0      [点我收藏+]

本人新手,有错误请多多指点!

#include <stdio.h>
#include <stdlib.h>
struct Student{  //创建一个结构体,结构体中定义两个int类型的成员
    int  age;
    int score;
};

typedef struct Student student;//给结构体起别名

typedef int (*ComparePtr_t)(student *s1,student *s2);//定义一个函数指针,并且给函数指针起别名

int compareAge(student *s1,student *s2)//定义外部函数,实现其功能
{
    return (s1->age)-(s2->age);
}

int compareScore(student *s1,student *s2)
{
    return (s1->score)-(s2->score);
}

void Bust(student *array,int number_of_elements,ComparePtr_t comparefunc)//算法
{
    int iter,swapped;
    student temp;
    do{
        swapped=0;
        for (iter=1; iter<number_of_elements; iter++) {
            if (comparefunc(&array[iter-1],&array[iter])<0) {
                temp=array[iter-1];
                array[iter-1]=array[iter];
                array[iter]=temp;
                swapped=1;
            }
        }
    
    }while (swapped);
    
}
int main(int argc, const char * argv[]) {
    student array[5]={{5,1},{3,8},{7,2},{6,4},{2,3}};
    Bust(array,5, compareAge);
    for (int iter=0; iter<5; iter++) {
        printf("age:%d score:%d\n",array[iter].age,array[iter].score);
    }
    printf("\n");
    return 0;
}
下面说说函数指针的作用:实现同一功能的多个模块统一起来标识,这样一来更容易后期的维护,系统结构更加清晰。

其运算结果为:

age:7 score:2
age:6 score:4
age:5 score:1
age:3 score:8
age:2 score:3

用函数调用实现冒泡函数与函数指针的使用

原文:http://www.cnblogs.com/tpj710/p/4369509.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!