| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 496 人关注过本帖
标题:链表操作
只看楼主 加入收藏
笋尖兰
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2008-11-27
收藏
 问题点数:0 回复次数:1 
链表操作
要求用链表排序,我想输一个排一个,以下是我编的,可是,结果就是出不来,我怀疑是while语句最后那两行出问题,可是我不知道到底是为什么错,帮忙看一下吧,谢谢!
当我用p指向新建的结点,并把它插进链表之后,我可以在申请内存空间吗?就像我做的那样,要不要delete?我尝试加过,可是连那句"依次排序为"都出不来了...请高手指点,谢谢!
#include <iostream>
using namespace std;
struct Node
{
    double content;
    Node *next;
};
int main()
{
    Node *head=NULL;//创建新链表;
    Node *p=new Node;
    cout<<"请输入要排序的数,以-1结束:"<<endl;
    cin>>p->content;//输入第一个数;
    head=p;
    p->next=NULL;//第一个结点创建完毕;
    Node *q=new Node;
    cin>>q->content;
    while (q->content!=-1)
    {    bool done=false;
        Node *x=head;
        if (x->content>q->content)//看新输入的数是否应该安排在第一个结点;
        {    q->next=x;
            head=q;
            done=true;
        }
        else//新输入的数插在当中;
        {    Node *r=head;
            x=x->next;
            for (;x!=NULL;x=x->next,r=r->next)
                if (q->content < x->content)
                {    q->next=x;
                    r->next=q;
                    done=true;
                    break;
                }
        }
        if (!done)//新输入的数插在最后;
        {    x=q;
            q->next=NULL;
        }
        Node *q=new Node;
        cin>>q->content;
    }
    Node *s=new Node;
    int count=0;
    cout<<"依次排序为:"<<endl;
    for (s=head;s->next!=NULL;s=s->next)//输出;
    {    cout<<s->content<<'\t';
        count++;
        if (count%6==0)
            cout<<endl;
    }
    cout<<endl;
    return 0;
}
搜索更多相关主题的帖子: 链表 
2008-11-28 22:03
pmars
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-11-12
收藏
得分:0 
#include <iostream>
using namespace std;
struct Node
{
    double content;
    Node *next;
};
int main()
{
    Node *head=new Node;//创建新链表;
    head->next=NULL;
    Node *p=new Node;
    cout<<"请输入要排序的数,以-1结束:"<<endl;
    cin>>p->content;//输入第一个数;
    head->next=p;
    p->next=NULL;//第一个结点创建完毕;
    Node *q=new Node;
    cin>>q->content;
    while (q->content!=-1)
    {   
        Node *r=head->next;
            while(((q->content)>(r->content))&&(r!=NULL))
            {
                p=r;
                r=r->next;
            }
            p->next=q;
            q->next=r;
        Node *q=new Node;
        cin>>q->content;
    }
    Node *s=new Node;
    for (s=head->next;s!=NULL;s=s->next)//输出;
    {   
        cout<<s->content<<'\t';
    }
    return 0;
}

运行有点慢,看看程序吧!
2008-11-29 13:00
快速回复:链表操作
数据加载中...
 
   



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

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