| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 381 人关注过本帖
标题:链表怎么排序啊,老是出错
只看楼主 加入收藏
瓦力
Rank: 2
等 级:论坛游民
帖 子:41
专家分:27
注 册:2011-11-18
结帖率:100%
收藏
 问题点数:0 回复次数:2 
链表怎么排序啊,老是出错
程序代码:
void browsenum()           //按编号浏览   冒泡排序
{
    BOOK  *p, *p1, *p2, *p3, *head;
    BOOK h,t;
    head = read();

    if(head = NULL) {printf("空文件!\n");  main();  exit(0);}
    h.next = head;
    p=&h;                       //记录头结点
    while(p->next!=NULL)  {
        p->next;
    }
    p=p->next=&t;           //记录为尾节点
    while(p!=h.next){
        p3 = &h;
        p1 = p3->next;
        p2 = p1->next;
        while(p2!=p){
            if(p1->num > p2->num){                    
                p1->next=p2->next;
                p2->next=p1;
                p3->next=p2;
                p3 = p2;
                p2=p1->next;
            }
            else{
                p3=p1;
                p1=p2;
                p2=p2->next;
            }
        }
        p=p1;
    }
    while(p->next!=&t) {
        p=p->next;
    }
    p=p->next=NULL;
    printfnum(h.next);
}

void printfnum(BOOK *h)
{
    int n = 15;
    BOOK *ptr;

    printf("\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n");
    printf("\t\tnumber\t\t writer\t\t name\t\t price\n");
    for(ptr=h; ptr; ptr= ptr->next){
        n++;
        printf("\t\t%d\t\t %s\t\t %s\t\t %.2f\n", ptr->num, ptr->writer, ptr->name, ptr->price);
        if(n%15 == 0){
             printf("press any to continue~~\n");
             getch();
             printf("\t\tnumber\t\t writer\t\t name\t\t price\n");
        }
    }
    printf("输出完毕! 按任意键回主菜单!\n");
    getch();
}
搜索更多相关主题的帖子: head 记录 
2012-04-11 20:48
ming_wl
Rank: 2
等 级:论坛游民
帖 子:6
专家分:28
注 册:2012-4-9
收藏
得分:0 
void browsenum()           //按编号浏览   冒泡排序
{
    BOOK  *p, *p1, *p2, *p3, *head;
    BOOK h,t;
    head = read();(
    bool ret;

    if(head == NULL) {printf("空文件!\n");  main();  exit(0);}
    h.next = head;
    p=&h;                       //记录头结点
    while(p->next!=NULL)  {
        p->next;
    }
    p=p->next=&t;           //记录为尾节点
    while(p!=h.next){
        ret = TRUE;
        p3 = &h;
        p1 = p3->next;
        p2 = p1->next;
        while(p2!=p){
            if(p1->num > p2->num){                    
                p1->next=p2->next;
                p2->next=p1;
                p3->next=p2;
                p3 = p2;
                p2=p1->next;
        if(ret == TRUE)
            h->next = p2;
            }
            else{
                p3=p1;
                p1=p2;
                p2=p2->next;
            }
        ret = FALSE;
        }
        p=p1;
    }
    while(p->next!=&t) {
        p=p->next;
    }
    p=p->next=NULL;
    printfnum(h.next);
}

void printfnum(BOOK *h)
{
    int n = 15;
    BOOK *ptr;

    printf("\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n");
    printf("\t\tnumber\t\t writer\t\t name\t\t price\n");
    for(ptr=h; ptr; ptr= ptr->next){
        n++;
        printf("\t\t%d\t\t %s\t\t %s\t\t %.2f\n", ptr->num, ptr->writer, ptr->name, ptr->price);
        if(n%15 == 0){
             printf("press any to continue~~\n");
             getch();
             printf("\t\tnumber\t\t writer\t\t name\t\t price\n");
        }
    }
    printf("输出完毕! 按任意键回主菜单!\n");
    getch();
}

h->next  没有做处理 要更新一下
还有 这个排序写的太麻烦了
2012-04-11 22:08
ming_wl
Rank: 2
等 级:论坛游民
帖 子:6
专家分:28
注 册:2012-4-9
收藏
得分:0 
h t 最好初始化一下 memset(h,0,sizeof(BOOK));
2012-04-11 22:11
快速回复:链表怎么排序啊,老是出错
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015223 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved