データ構造の線形表---秩序チェーンの構築

6330 ワード


データ構造実験のチェーン表六:秩序チェーンの構築
<!--
h 2{
カラー:(菗7 ca 9 ed)
magin-top:10 px;
)
ダタ{
text-align:left;
font-family:「Courier New」,Courier,monoscace;
font-size:16 px
white-space:pre;
line-height:20 px;
border:1 px sold钻ADAD;
background-カラー:燃E 0 E 0 E 0;
text-indent:0 px;
)
プロdesc{
white-space:normal;
)
//*start of bottom-menu*/
シボトメンメン{
border-top:1 px sold苉DEDEDE DEDEDE;
magin-top:10 px;
font-size:16 px
)
ヽoo...........................................................
magin:15 px 0 15 px 0
text-align:センター
)
ヽoo..........................................................
border-bottom:none;
display:inline;
magin:0 15 px;
)
ヽoo...........................................................
display:inline;
)
//end of bottom-menu*/
-->
データ構造実験のチェーン表六:秩序チェーンの構築   
 
Time Limit:1000 MS    メモリリミット:65536 K
テーマの説明
N個の無秩序な整数を入力して、秩序なチェーンテーブルを作成し、チェーンテーブルの中の結点は数値的に非降順に配列し、この秩序なチェーンテーブルを出力します.
入力
1行目は整数個数Nを入力します.2行目は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;

}