// sennkei list
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int val;
struct node *next;
}Node;
Node *head = NULL;
Node* createN(int x){
Node *newnode;
newnode
= (Node
*)malloc(sizeof(Node
)); newnode->val = x;
newnode->next = NULL;
return newnode;
}
void initL(int n){
int x,i;
Node *p;
head = createN(x);
p = head;
for(i=1;i<n;i++){
p->next = createN(x);
p = p->next;
}
}
void freeL(){
Node *p;
while(head!=NULL){
p = head->next;
head = p;
}
}
void printN(Node *a){
if(a
== NULL
) printf("NULL\n"); }
void printL(){
Node *p = head;
while(p != NULL){
p = p->next;
}
}
Node* getN(int n){
int i;
Node *p;
p = head;
for(i=1;i<n;i++) p = p->next;
return p;
}
int countL(){
int ret = 0;
Node *p = head;
while(p!=NULL){
p = p->next;
ret++;
}
return ret;
}
Node* searchX(int x){
Node *p;
for(p=head; p!=NULL; p=p->next){
if(p->val == x) break;
}
return p;
}
void insHead(int x){
Node *p; //1
p = createN(x); //1
p->next = head; //2
head = p; //3
}
void insMiddle(int n, int x){
int i;
Node *p,*q;
p = head; //1
for(i=1;i<n;i++){ //2
p = p->next; //2
}
q = createN(x); //3
q->next = p->next; //4
p->next = q; //5
}
void insTail(int x){
Node *p;
p = head; //1
if(p==NULL){
head = createN(x);
return;
}
while(p->next != NULL){ //2
p = p->next; //2
}
p->next = createN(x); //3
}
void delHead(){
Node *p;
p = head; //1
head = head->next; //2
}
void delMiddle(int n){
int i;
Node *p,*q;
p = head; //1
for(i=1;i<n-1;i++){ //2
p = p->next; //2
}
q = p->next; //3
p->next = q->next; //4
}
void delTail(){
Node *p;
p = head; //1
while(p->next->next != NULL){ //2
p = p->next; //2
}
p->next = NULL; //4
}
void makeL(int n, int a[]){
//continue = その時点でループの残りの処理をスキップ
//ここを書く
int i;
//ループ内に書かないとエラーが起こる。
/*Node *p;
p = head;*/
for(i=0;i<n;i++){
//一番最初に追加する数
if(head==NULL){
insHead(a[i]);
continue;
}
//一番小さい数より小さいなら先頭に入る
if(a[i]<head->val){
insHead(a[i]);
continue;
}
//中間or最後の時
Node *p;
p = head;
//中間のどこに入るかをカウントする
int count=1;
//最後まで行くor次の数が大きい時まで
while(p->next != NULL && p->next->val < a[i]){
p = p->next;
count++;
}
//最後に追加
if(p->next==NULL){
insTail(a[i]);
continue;
}
else insMiddle(count,a[i]);
}
}
int main(void){
int i,n;
int *a;
a
= (int*)malloc(sizeof(int)*n
); for(i=0;i<n;i++){
}
makeL(n,a);
printL();
freeL();
return 0;
}
Ly8gc2VubmtlaSBsaXN0CgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKdHlwZWRlZiBzdHJ1Y3Qgbm9kZSB7CiAgICBpbnQgdmFsOwogICAgc3RydWN0IG5vZGUgKm5leHQ7Cn1Ob2RlOwoKTm9kZSAqaGVhZCA9IE5VTEw7CgpOb2RlKiBjcmVhdGVOKGludCB4KXsKICAgIE5vZGUgKm5ld25vZGU7CiAgICBuZXdub2RlID0gKE5vZGUgKiltYWxsb2Moc2l6ZW9mKE5vZGUpKTsKICAgIG5ld25vZGUtPnZhbCA9IHg7CiAgICBuZXdub2RlLT5uZXh0ID0gTlVMTDsKICAgIHJldHVybiBuZXdub2RlOwp9Cgp2b2lkIGluaXRMKGludCBuKXsKICAgIGludCB4LGk7CiAgICBOb2RlICpwOwogICAgc2NhbmYoIiVkIiwmeCk7CiAgICBoZWFkID0gY3JlYXRlTih4KTsKICAgIHAgPSBoZWFkOwogICAgZm9yKGk9MTtpPG47aSsrKXsKICAgICAgICBzY2FuZigiJWQiLCZ4KTsKICAgICAgICBwLT5uZXh0ID0gY3JlYXRlTih4KTsKICAgICAgICBwID0gcC0+bmV4dDsKICAgIH0KfQoKdm9pZCBmcmVlTCgpewogICAgTm9kZSAqcDsKICAgIHdoaWxlKGhlYWQhPU5VTEwpewogICAgICAgIHAgPSBoZWFkLT5uZXh0OwogICAgICAgIGZyZWUoaGVhZCk7CiAgICAgICAgaGVhZCA9IHA7CiAgICB9Cn0KCnZvaWQgcHJpbnROKE5vZGUgKmEpewogICAgaWYoYSA9PSBOVUxMKSBwcmludGYoIk5VTExcbiIpOwogICAgZWxzZSBwcmludGYoIiVkXG4iLGEtPnZhbCk7Cn0KCnZvaWQgcHJpbnRMKCl7CiAgICBOb2RlICpwID0gaGVhZDsKICAgIHdoaWxlKHAgIT0gTlVMTCl7CiAgICAgICAgcHJpbnRmKCIlZCAiLHAtPnZhbCk7CiAgICAgICAgcCA9IHAtPm5leHQ7CiAgICB9CiAgICBwcmludGYoIlxuIik7Cn0KCk5vZGUqIGdldE4oaW50IG4pewogICAgaW50IGk7CiAgICBOb2RlICpwOwogICAgcCA9IGhlYWQ7CiAgICBmb3IoaT0xO2k8bjtpKyspIHAgPSBwLT5uZXh0OwogICAgcmV0dXJuIHA7Cn0KCmludCBjb3VudEwoKXsKICAgIGludCByZXQgPSAwOwogICAgTm9kZSAqcCA9IGhlYWQ7CiAgICB3aGlsZShwIT1OVUxMKXsKICAgICAgICBwID0gcC0+bmV4dDsKICAgICAgICByZXQrKzsKICAgIH0KICAgIHJldHVybiByZXQ7Cn0KCk5vZGUqIHNlYXJjaFgoaW50IHgpewogICAgTm9kZSAqcDsKICAgIGZvcihwPWhlYWQ7IHAhPU5VTEw7IHA9cC0+bmV4dCl7CiAgICAgICAgaWYocC0+dmFsID09IHgpIGJyZWFrOwogICAgfQogICAgcmV0dXJuIHA7Cn0KCnZvaWQgaW5zSGVhZChpbnQgeCl7CiAgICBOb2RlICpwOyAgICAgICAgLy/vvJEKICAgIHAgPSBjcmVhdGVOKHgpOyAvL++8kQogICAgcC0+bmV4dCA9IGhlYWQ7IC8v77ySCiAgICBoZWFkID0gcDsgICAgICAgLy/vvJMKfQoKdm9pZCBpbnNNaWRkbGUoaW50IG4sIGludCB4KXsKICAgIGludCBpOwogICAgTm9kZSAqcCwqcTsKICAgIHAgPSBoZWFkOyAgICAgICAgICAgLy/vvJEKICAgIGZvcihpPTE7aTxuO2krKyl7ICAgLy/vvJIKICAgICAgICBwID0gcC0+bmV4dDsgICAgLy/vvJIKICAgIH0KICAgIHEgPSBjcmVhdGVOKHgpOyAgICAgLy/vvJMKICAgIHEtPm5leHQgPSBwLT5uZXh0OyAgLy/vvJQKICAgIHAtPm5leHQgPSBxOyAgICAgICAgLy/vvJUKfQoKdm9pZCBpbnNUYWlsKGludCB4KXsKICAgIE5vZGUgKnA7CiAgICBwID0gaGVhZDsgICAgICAgICAgICAgICAvL++8kQogICAgaWYocD09TlVMTCl7CiAgICAgICAgaGVhZCA9IGNyZWF0ZU4oeCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgd2hpbGUocC0+bmV4dCAhPSBOVUxMKXsgLy/vvJIKICAgICAgICBwID0gcC0+bmV4dDsgICAgICAgIC8v77ySCiAgICB9CiAgICBwLT5uZXh0ID0gY3JlYXRlTih4KTsgICAvL++8kwp9Cgp2b2lkIGRlbEhlYWQoKXsKICAgIE5vZGUgKnA7CiAgICBwID0gaGVhZDsgICAgICAgICAgIC8v77yRCiAgICBoZWFkID0gaGVhZC0+bmV4dDsgIC8v77ySCiAgICBmcmVlKHApOyAgICAgICAgICAgIC8v77yTCn0KCnZvaWQgZGVsTWlkZGxlKGludCBuKXsKICAgIGludCBpOwogICAgTm9kZSAqcCwqcTsKICAgIHAgPSBoZWFkOyAgICAgICAgICAgLy/vvJEKICAgIGZvcihpPTE7aTxuLTE7aSsrKXsgLy/vvJIKICAgICAgICBwID0gcC0+bmV4dDsgICAgLy/vvJIKICAgIH0KICAgIHEgPSBwLT5uZXh0OyAgICAgICAgLy/vvJMKICAgIHAtPm5leHQgPSBxLT5uZXh0OyAgLy/vvJQKICAgIGZyZWUocSk7ICAgICAgICAgICAgLy/vvJUKfQoKdm9pZCBkZWxUYWlsKCl7CiAgICBOb2RlICpwOwogICAgcCA9IGhlYWQ7ICAgICAgICAgICAgICAgICAgICAgICAvL++8kQogICAgd2hpbGUocC0+bmV4dC0+bmV4dCAhPSBOVUxMKXsgICAvL++8kgogICAgICAgIHAgPSBwLT5uZXh0OyAgICAgICAgICAgICAgICAvL++8kgogICAgfQogICAgZnJlZShwLT5uZXh0KTsgICAgICAgICAgICAgICAgICAvL++8kwogICAgcC0+bmV4dCA9IE5VTEw7ICAgICAgICAgICAgICAgICAvL++8lAp9Cgp2b2lkIG1ha2VMKGludCBuLCBpbnQgYVtdKXsKICAgIC8vY29udGludWUgPSDjgZ3jga7mmYLngrnjgafjg6vjg7zjg5fjga7mrovjgorjga7lh6bnkIbjgpLjgrnjgq3jg4Pjg5cKCS8v44GT44GT44KS5pu444GPCglpbnQgaTsKCgkvL+ODq+ODvOODl+WGheOBq+abuOOBi+OBquOBhOOBqOOCqOODqeODvOOBjOi1t+OBk+OCi+OAggoJLypOb2RlICpwOwogICAgcCA9IGhlYWQ7Ki8KICAgIAogICAgZm9yKGk9MDtpPG47aSsrKXsKICAgICAgICAKICAgICAgICAvL+S4gOeVquacgOWIneOBq+i/veWKoOOBmeOCi+aVsAogICAgICAgIGlmKGhlYWQ9PU5VTEwpewogICAgICAgICAgICBpbnNIZWFkKGFbaV0pOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgLy/kuIDnlarlsI/jgZXjgYTmlbDjgojjgorlsI/jgZXjgYTjgarjgonlhYjpoK3jgavlhaXjgosKICAgICAgICBpZihhW2ldPGhlYWQtPnZhbCl7CiAgICAgICAgICAgIGluc0hlYWQoYVtpXSk7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL+S4remWk29y5pyA5b6M44Gu5pmCCiAgICAgICAgTm9kZSAqcDsKICAgICAgICBwID0gaGVhZDsKICAgICAgICAvL+S4remWk+OBruOBqeOBk+OBq+WFpeOCi+OBi+OCkuOCq+OCpuODs+ODiOOBmeOCiwogICAgICAgIGludCBjb3VudD0xOwogICAgICAgIAogICAgICAgIC8v5pyA5b6M44G+44Gn6KGM44GPb3LmrKHjga7mlbDjgYzlpKfjgY3jgYTmmYLjgb7jgacKICAgICAgICB3aGlsZShwLT5uZXh0ICE9IE5VTEwgJiYgcC0+bmV4dC0+dmFsIDwgYVtpXSl7CiAgICAgICAgICAgIHAgPSBwLT5uZXh0OwogICAgICAgICAgICBjb3VudCsrOwogICAgICAgIH0KICAgICAgICAvL+acgOW+jOOBq+i/veWKoAogICAgICAgaWYocC0+bmV4dD09TlVMTCl7CiAgICAgICAgICAgaW5zVGFpbChhW2ldKTsKICAgICAgICAgICBjb250aW51ZTsKICAgICAgIH0KICAgICAgIAogICAgICAgZWxzZSBpbnNNaWRkbGUoY291bnQsYVtpXSk7CiAgICB9CiAgICAKfQoKaW50IG1haW4odm9pZCl7CiAgICBpbnQgaSxuOwogICAgaW50ICphOwogICAgc2NhbmYoIiVkIiwmbik7CiAgICBhID0gKGludCopbWFsbG9jKHNpemVvZihpbnQpKm4pOwogICAgZm9yKGk9MDtpPG47aSsrKXsKICAgIAlzY2FuZigiJWQiLCZhW2ldKTsKICAgIH0KICAgIG1ha2VMKG4sYSk7CiAgICBwcmludEwoKTsKICAgIGZyZWVMKCk7CiAgICByZXR1cm4gMDsKfQo=