izumi_tan 2016-06-20 23:56 采纳率: 42.9%
浏览 1544
已采纳

求解,如何用链表实现冒泡排序?链表里面的数据交换如何实现?

#include
using namespace std;
struct ListNode
{
int num;
ListNode *next;
};

ListNode *create(int n)
{ListNode *p,*tail=0,*head=0;
for(int j=0;j {p=new ListNode;cin>>p->num;
p->next=0;
if(head==0)head=p;
else tail->next=p;
tail=p;
}
return head;
}

void Bubble_sort(int n)
{ListNode *now=0,*ne=0,*tail=0,*head=0;
int temp;
head=tail=create(n);
for(int i=1;i {tail=head;
for(int j=1;j {now=tail;
ne=tail->next;
if((now->num)>(ne->num))
{
temp=(now->num);
(now->num)=(ne->num);
(ne->num)=temp;
tail=tail->next;
}
}
}
tail=head;
for(int k=0;k {
coutnum<<' ';
tail=tail->next;
}
}
int main()
{
int leng;
cin>>leng;
Bubble_sort(leng);

}

  • 写回答

1条回答 默认 最新

  • 小灸舞 2016-06-21 01:41
    关注

    两个错误:
    1.内存j循环for(int j=1;j<=n-i;n++)应该是for(int j=1;j<=n-i;j++)
    2.tail=tail->next;应该放到if外面,而不是if里面

     #include<iostream>
    using namespace std;
    struct ListNode
    {
        int num;
        ListNode *next;
    };
    
    ListNode *create(int n)
    {
        ListNode *p,*tail=0,*head=0;
        for(int j=0;j<n;j++)
        {
            p=new ListNode;
            cin>>p->num;
            p->next=0;
            if(head==0)
                head=p;
            else 
                tail->next=p;
            tail=p;
        }
        return head;
    }
    
    
    void Bubble_sort(int n)
    {
        ListNode *now=0,*ne=0,*tail=0,*head=0;
        int temp;
        head=tail=create(n);
        for(int i=1;i<n;i++)
        {
            tail=head;
            for(int j=1;j<=n-i;j++)
            {
                now=tail;
                ne=tail->next;
                if((now->num)>(ne->num))
                {
                    temp=(now->num);
                    (now->num)=(ne->num);
                    (ne->num)=temp;
                }
                tail=tail->next;
            }
        }
        tail=head;
        for(int k=0;k<n;k++)
        {
            cout<<tail->num<<' ';
            tail=tail->next;
        }
    }
    int main()
    {
        int leng;
        cin>>leng;
        Bubble_sort(leng);
    
    }
    
    

    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)