SDUT - 3712 插入排序

#include <stdio.h>
#include <stdlib.h>
struct node
{
    int data;
    struct node *next;
};
int main()
{
    int n, i, m;
    while(scanf("%d", &n) != EOF)
    {
        struct node *h, *q, *p;
        h = (struct node *)malloc(sizeof(struct node ));
        h -> next = NULL;
        q = h;
        for(i = 0; i < n; i++)
        {
            p = (struct node *)malloc(sizeof(struct node ));
            p -> next = NULL;
            scanf("%d", &p -> data);
            q -> next = p;
            q = p;
        }
        scanf("%d", &m);
        for(i = 0; i < m; i++)
        {
            int cmd;
            scanf("%d", &cmd);
            if(cmd == 1)
            {
                p = (struct node *)malloc(sizeof(struct node ));
                p -> next = NULL;
                scanf("%d", &p -> data);
                q = h;
                while(q -> next)
                {
                    if(q -> next -> data > p -> data)break;
                    q = q -> next;
                }
                p -> next = q -> next;
                q -> next = p;
            }
            else
            {
                p = h -> next;
                printf("%d", p -> data);
                p = p -> next;
                while(p)
                {
                    printf(" %d", p -> data);
                    p = p -> next;
                }
                printf("\n");
            }
        }
        p = h;
        while(p)
        {
            q = p -> next;
            free(p);
            p = q;
        }
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/Miracle_QSH/article/details/81699939