データ構造の線形表---秩序チェーンの構築
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;
}