• 分页功能-----》链表实现


    #include<stdio.h>
    #include<string.h>
    #include<time.h>
    #include<stdlib.h>
    
    typedef struct NodeT{
        int phone;
        char *str;
        int bh;
        struct NodeT *hnext;
        struct NodeT *pnext;
    }list;
    
    typedef struct 
    {
        int pageCount;//共多少页
        int count;//共多少条
        int item;//每页多少条
        int currentPage;//当前页
    }Page;
    
    void file_read();
    char *get_str();
    void get_on();
    void begin(list **,int currentPage,int item,list **,list **);
    void get_tail(int,int ,list ***,list ***);
    void get_head(int,int ,list ***,list ***);
    
    int main(){
        list *l;
        list *head=NULL;
        list *tail=NULL;
        Page ptr;
        int cnt;
        cnt=rand();
        ptr.count=cnt;
        ptr.item=10;
        ptr.currentPage=1;
        ptr.pageCount=cnt/10;
        if((ptr.pageCount*10)!=cnt)
            ptr.pageCount+=1;
        printf("%d
    ",cnt);
        file_read(cnt,&l);    
    
    
        begin(&l,ptr.currentPage,ptr.item,&head,&tail);
        get_on(ptr.pageCount,ptr.currentPage,ptr.item,&head,&tail);
    
        return 0;
    }
    
    char *get_str(){
        char *str="hello";
        return str;
    }
    
    
    int get_bh(){
        static int bh=1;
        return bh++;
    }
    
    
    void file_read(int num,list **l){//读入内容
        list *node=NULL;
        list *top=NULL;
        list *end=NULL;
        int i;
        *l=node;
        //srand(time(0));
        for(i=1;i<=num;i++){
            node=(list *)malloc(sizeof(list));
            node->bh=get_bh();
            node->str=get_str();
            node->phone=rand();
            node->pnext=NULL;
            if(i==1){
                node->hnext=NULL;
                top=end=node;
                continue;
            }
            node->hnext=end;
            end->pnext=node;
            end=node;
        }
        *l=top;
    }
    
    void begin(list **l,int currentPage,int item,list **head,list **end){
        list *top=(*l);
        printf("第 %d 页
    ",currentPage);
        (*head)=(*l);
        while(item){
            item--;
            printf("%d    %d      %s
    ",top->bh,top->phone,top->str);
            top=top->pnext;
        }
        (*end)=top;
    }
    
    
    void get_on(int pageCount,int currentPage,int item,list **head,list **tail){
        int flag;
        while(scanf_s("%d",&flag)!=EOF){
        if(flag==1){
            if(pageCount==currentPage){
                printf("没有下一页
    ");
                continue;
            }
    
            currentPage++;
    
            get_tail(currentPage,item,&head,&tail);
            /*    printf("%d    %d      %s
    ",(*head)->bh,(*head)->phone,(*head)->str);
                printf("%d    %d      %s
    ",(*tail)->bh,(*tail)->phone,(*tail)->str);*/
        
        }
        else{
            if(currentPage==1){
                printf("没有上一页
    ");
                continue;
            }
            currentPage--;
            get_head(currentPage,item,&head,&tail);
            //get_tail( currentPage, item ,&head,&tail);
        }
        }
    }
    
    void get_tail(int currentPage,int item ,list *** head,list ***tail){
        list *top=(**tail);
        printf("第 %d 页
    ",currentPage);
        (**head)=(**tail);
        while(item&&((top)!=NULL)){
            item--;
            printf("%d    %d      %s
    ",top->bh,top->phone,top->str);
            if(top->pnext==NULL)
                break;
            top=top->pnext;
        }
        (**tail)=top;
    }
    void get_head(int currentPage,int item ,list *** head,list ***tail){
        list *top=(**head);
        list *tmp_head=NULL;
        list *tmp_tail=top;
        int tmp=item;
        (**tail)=(**head);
        while(item){
            item--;
            top=top->hnext;
        }
        (**head)=top;
        tmp_head=top;
        printf("第 %d 页
    ",currentPage);
        while(tmp){
            tmp--;
            printf("%d    %d      %s
    ",tmp_head->bh,tmp_head->phone,tmp_head->str);
            tmp_head=tmp_head->pnext;
        }
    }
  • 相关阅读:
    Linux 用户管理
    oracle索引(转)
    oracle物理视图(转)
    oracle事物总结(转)
    SQL条件循环语句以及异常知识整理
    ORACLE 中ROWNUM用法总结! (转)
    PL/SQL编程重点语句输出整理
    Oracle函数整理
    Oracle子查询中any、some、all之间的区别
    Oracle DQL查询语言整理
  • 原文地址:https://www.cnblogs.com/13224ACMer/p/5609107.html
Copyright © 2020-2023  润新知