分页导航算法

php写起来不太好,算法还是用C或C++写起来方便些:

#include <stdio.h>

#include <stdlib.h>

void out_put(int start,int end,int cur){

	int i = start;

	for(;i<=end;i++){

		if(i==cur) printf("* ");

		else printf("%d ",i);

	}

}

void navi(int cur,int page){

    int show=9, hf=show/2;

    if(cur!=1) printf("Prev ");

    if(page<=show){

		out_put(1,page,cur);

    } else {

        if(cur-1<hf+2){

			out_put(1,cur,cur);

        } else {

            printf("1 ");

            if(page!=show+1) printf("... ");

			out_put(cur-hf+(page-cur-hf>0?0:page-cur-hf),cur,cur);

        }

        if(page-cur<hf+2){

			out_put(cur+1,page,cur);

        } else {

			out_put(cur+1,cur+hf-(cur-hf>1?0:cur-hf-1),cur);

            if(page!=show+1) printf("... ");

            printf("%d ",page);

        }

    }

	if(cur!=page) printf("Next");

}

int main(int argc,char** argv){

    if(argc!=3){

        printf("Parameters error!\n");

        return -1;

    }

    navi( atoi(argv[1]), atoi(argv[2]) );

	printf("\n");

    return 0;

}

 

编译运行看一下:

分页导航算法

gpp命令实际上就是gcc命令,会编译出来一个a.exe,用a就可以运行,接受两个参数,第一个是当前页,第二个是总页数。

还有些地方需要改进,欢迎大家提意见。

你可能感兴趣的:(算法)