注册 登录
编程论坛 C++教室

高手帮我改下程序,关于动态链表

秋秋000 发布于 2011-03-20 16:59, 470 次点击
要求是输入一串数字,按大小依次存入自定义的链表中,以输入0结束,最后输出链表
#include <iostream>
using namespace std;
#define NULL 0

int main()
{struct shu
{
    long num;
    shu *next;
};
    cout<<"input the num:";
    int n;
    shu *p0,*p1,*p2,*p;
    shu *head;
    head=NULL;
    p0=new shu;
    cin>>p0->num;
    p1=head;
    while(p0->num!=0)
    {
        if(head==NULL)
        {
            head=p0;
            p0->next=NULL;
        }
        else
        {
            while ((p0->num>p1->num)&&(p1->next!=NULL))
            {
                p2=p1;
                p1=p1->next;
            }
            if(p0->num<p1->num)
            {
                if(head==p1)head=p0;
                else p2->next=p0;
                p0->next=p1;
            }
            else
            {
                p1->next=p0;
                p0->next=NULL;
            }
        }
        n=n+1;
        
    }
    cout<<"there are:";
    p=head;
    do
    {
        cout<<p->num<<" ";
        p=p->next;
    }
    while(p!=NULL);
return 0;
}
3 回复
#2
诸葛修勤2011-03-20 18:26
程序代码:
#include <iostream>
using namespace std;

#define NULL 0

int main()
{
    struct shu
    {
        long num;
        struct shu *next;
    };
    int n;
    shu *head = NULL;
    shu *p = NULL;
    shu *q = NULL;
    shu *fq = NULL;

    cout<<"\t每次输入数字并按enter进行下次输入  最终以零结束\n";
    while( cin >> n, 0 != n )
    {
        p = new struct shu;
        p->num = n;
        q = head;
        while( NULL != q && q->num < p->num )
        {
            fq = q;
            q = q->next;
        }

        if( NULL == fq )
        {
            p->next = head;
            head = p;
        }
        else
        {
            p->next = fq->next;
            fq->next = p;
        }
    }
    cout<<"there are:";
    p = head;
    while( NULL != p )
    {
        cout << p->num << ' ';
        p = p->next;
    }
    cout << endl;

    return 0;
}
#3
秋秋0002011-03-20 18:38
回复 2楼 诸葛修勤
谢谢
#4
诸葛修勤2011-03-20 21:18
回复 3楼 秋秋000
不用客气
1