数据结构之 线性表---有序链表的建立

  

数据结构实验之链表六:有序链表的建立

数据结构实验之链表六:有序链表的建立   

 

Time Limit: 1000MS    Memory limit: 65536K

题目描述

输入N个无序的整数,建立一个有序链表,链表中的结点按照数值非降序排列,输出该有序链表。

输入

第一行输入整数个数N; 第二行输入N个无序的整数。

输出

依次输出有序链表的结点值。

示例输入

6

33 6 22 9 44 5

示例输出

5 6 9 22 33 44

#include <stdio.h>

#include <string.h>

#include <iostream>

#include <iomanip>

#include <string>

#include <algorithm>



using namespace std;



struct node

{

    int data;

    struct node *next;

};



int main()

{

    int n;

    int i, j;

    cin>>n;



    struct node *head, *p, *q, *w;



    head=new struct node;

    head->next=NULL;



    int dd;

    int len=0;

    int ff;

    while(n--)

    {

        cin>>dd;

        p=new struct node;



        p->data = dd;

        p->next = NULL;



        if(head->next==NULL)

        {

            head->next=p;

            len++;

        }

        else

        {

            q=head;

            w=head->next;

            ff=0;

            for(i=0; i<len; i++)

            {

                if(w->data > dd)

                {

                    p->next = w;

                    q->next = p;

                    ff=1;

                    //len++;

                    break;

                }

                else

                {

                   q=q->next;

                   w=w->next;

                }

            }

            if(ff==0)

            {

                q->next=p;

            }

            len++;

        }

    }

    w=head->next;



    for(j=0; j<len; j++)

    {

        if(j==0)

            cout<<w->data;

        else

            cout<<" "<<w->data;

        w=w->next;

    }

    cout<<endl;



    return 0;

}

 

你可能感兴趣的:(数据结构)