| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 678 人关注过本帖, 1 人收藏
标题:请高手帮我看下这个简单的程序问题出在哪里?
只看楼主 加入收藏
tjhohai1983
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-4-18
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:6 
请高手帮我看下这个简单的程序问题出在哪里?
#include<iostream.h>
struct node
{
    int data;
    struct node *next;
    struct node *prev;
};
struct node *create()
{
    struct node *p,*q,*head;
    head=0;
    int i;
    cin>>i;
    while(i!=0)
    {
        p=new struct node;
        p->data=i;
        p->next=0;
        if(head==0)
        {
            head=p;
            q=head;
        }
        else
        {
            q->next=p;
            p->prev=q;
            q=p;
        }
        cin>>i;
    }
    return(head);
}
void show(struct node *head)
{
    struct node *p;
    p=head;
    while(p!=0)
    {
        cout<<p->data<<endl;
        p=p->next;
    }
}
struct node *sort(struct node *head)
{
    struct node *p,*q,*r,*t,*headnew=0;
    p=head;
    r=head;
    int max=0;
    while(r!=0)
    {
        p=r;
        max=0;
        while(p!=0)
        {
            if(p->data>max)
            {
                max=p->data;
                q=p;
            }
            p=p->next;
        }
        if(q->prev==0&&q->next!=0)
            head=q->next;
        else if(q->next==0&&q->prev!=0)
           q->prev->next=0;
        else
            q->prev->next=q->next;
            q->prev=0;
            q->next=0;
            if(headnew==0)
            {
                headnew=q;
                t=headnew;
            }
            else
            {
                t->next=q;
                t=q;
                q->prev=t;
            }
            r=head;
    }
    return(headnew);
}
void main()
{
    struct node *head;
    head=create();
    show(head);
    head=sort(head);
    show(head);
}
编译没错误,就是运行的时候出问题了,不能继续运行下去。只能显示没有排序之前的链表的内容。
2010-04-29 11:01
newstar10
Rank: 2
等 级:论坛游民
帖 子:32
专家分:48
注 册:2010-4-14
收藏
得分:5 
程序没有注释,也没有说明程序功能和用途,看不懂。
2010-04-29 16:40
刘洋
Rank: 1
等 级:新手上路
帖 子:8
专家分:5
注 册:2010-4-6
收藏
得分:5 
讲一下题目啊?
2010-04-29 21:54
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:5 
回复 楼主 tjhohai1983
你的代码能够通过编译和链接,都没有报错啊。
是不是运行是出了问题?
请楼主详细说明。

南国利剑
2010-04-30 13:36
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:216
帖 子:1485
专家分:9068
注 册:2010-3-16
收藏
得分:5 
if(head==0)
        {
            head=p;
            p->prev=0; //加上这句。下面的也一样。
            q=head;
        }
struct node *sort(struct node *head) 排序过程有问题
2010-05-02 11:18
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:216
帖 子:1485
专家分:9068
注 册:2010-3-16
收藏
得分:0 
程序代码:
struct node *sort(struct node *head)
{
    struct node *p,*r;
    int t;
    r=head;
    while(r!=0)
    {
        p=head;
        while(p!=0)
        {
            if(p->data>r->data)
            {
                  t=p->data;
                p->data=r->data;
                r->data=t;
            }
            p=p->next;
        }
        r=r->next;
    }

    return(head);
}


2010-05-02 12:06
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
佩服楼主。如此长的代码,完全没有注释,也能耐心的调下来。

南国利剑
2010-05-03 23:58
快速回复:请高手帮我看下这个简单的程序问题出在哪里?
数据加载中...
 
   



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

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