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 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决