| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 1896 人关注过本帖
标题:链表中冒泡起不到效果???
只看楼主 加入收藏
X15810803158
Rank: 2
等 级:论坛游民
帖 子:49
专家分:36
注 册:2015-2-24
结帖率:91.67%
  问题点数:0  回复次数:1   
链表中冒泡起不到效果???
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>

typedef struct node
{
    int date;//数据域
    struct node * pnext;//指针域

}NODE,*PNODE;//NODE等价于struct node,PNODE等价于struct node *;
//声明
PNODE creat_list(void);//创建一个链表,
void traverse_list(PNODE phead);
//bool is_empty(PNODE phead);
int list (PNODE phead);   
void sort_list(PNODE );


int main()
{
    PNODE phead = NULL;
    phead = creat_list();//创建一个链表,把头结点的地址赋给phead;
    traverse_list(phead);
   
    int len = list (phead);
    printf("链表长度为len = %d:\n",len);
    sort_list(phead);
    /*if (is_empty(phead))
         printf("次链表为空\n");
        
    else
        printf("此链表不空\n");*/

    return 0;
}


PNODE creat_list(void)
{
    int len;//存放有效节点的个数
    int i;
    int val;//临时存放用户输入的节点的值

    //动态构造头结点
    PNODE phead = (PNODE)malloc(sizeof(NODE));
    if (NULL == phead)
    {
        printf("分配失败!");
        exit(-1);
    }
    PNODE ptail = phead;//构造尾节点
    ptail->pnext = NULL;

    printf("请输入节点的个数:len = ");
    scanf("%d",&len);

    for (i=0; i<len; i++)
    {
        printf("请输入第%d个节点的个数:",i+1);
        scanf("%d",&val);


        //动态构造一个新节点
        PNODE pnew = (PNODE)malloc(sizeof(NODE));
        if (NULL == pnew)
    {
        printf("分配失败!!\n");
        exit(-1);
    }

        pnew->date = val;
        ptail->pnext = pnew;//新节点挂在尾节点后
        pnew->pnext = NULL;
        ptail = pnew;

   
    }
   


  return phead;
}

/*bool is_empty(PNODE phead)
{
    if (NULL==phead->pnext)
        return true;
    else
        return false;




}*/

 int list (PNODE phead)
 {
     int len = 0;
     PNODE p = phead->pnext;
    while (NULL != p)
    {
        len ++;
        p = p->pnext;
   
    }

    return len;
 
 
 
 
 }
//冒泡排序
 void sort_list(PNODE phead)
 {
     int i,j,t;
     PNODE p,q;
     int len = list (phead);

     for (i=0,p=phead->pnext; i<len-1; i++,p=p->pnext)
     {
         for (j=i+1,q=p->pnext; j<len;j++,q=q->pnext)
         {
             if (p->date > q->date)
             {
                 t = p->date;
                 p->date = q->date;
                 q->date = t;
            
            
            
             }
         
         
         
         
         }
     
     }
 
 
 
 
 }


 void traverse_list(PNODE phead)
{
    PNODE p = phead->pnext;
    while (NULL != p)
    {
        printf("%3d",p->date);
        p = p->pnext;
   
    }

printf("\n");

return ;

}
搜索更多相关主题的帖子: include 
2015-11-19 22:00
林月儿
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:湖南
等 级:版主
威 望:129
帖 子:1902
专家分:8346
注 册:2015-3-19
  得分:0 
//冒泡排序
void sort_list(PNODE phead)
{
     int i,j,t;
     PNODE p,q;
     int len = list (phead);

     for (i=0,p=phead->pnext; i<len-1; i++,p=p->pnext)
     {
         for (j=i+1,q=p->pnext; j<len;j++,q=q->pnext)
         {
             if (p->date > q->date)
             {
                 t = p->date;
                 p->date = q->date;
                 q->date = t;
            
            
            
             }
         
         
         
         
         }
     
     }
这写的是什么?我表示鸭梨很大

知命以下无敌
2015-11-20 20:59







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

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