顺序表的插入

来源:互联网 发布:淘宝网购物女装衬衫 编辑:程序博客网 时间:2024/05/21 18:44

1454.顺序表的插入
时限:1000ms 内存限制:10000K 总时限:3000ms
描述
先读入数据建立顺序表va,表中的数据元素递增有序,再读入一个整数x,将它插入到顺序表中的适当位置,并保持顺序表的有序性。
输入
先输入一个小于100的正整数n,紧接着读入n个从小到大的正整数,建立顺序表,最后再读入一个正整数x,把它插入到顺序表中的适当位置,并保持顺序表的有序性。
输出
按顺序输出整个顺序表,输出的每个元素占一行。
输入样例
4
2 100 3000 3890
200
输出样例
2
100
200
3000
3890

#include <iostream>#include <cstdio>#include <cstdlib>#define MAXSIZE 20using namespace std;typedef struct{    int data[MAXSIZE];    int len;}SeqList;SeqList *Init_SeqList()//顺序表初始化{    SeqList *L;    L = (SeqList*)malloc(sizeof(SeqList));    L->len=0;    return L;}void CreatList(SeqList **L)//建立顺序表{    int i,n;    //printf("Input length of list:\n");    scanf("%d",&n);    //printf("Input elements of list:\n");    for(i=1;i<=n;i++)    {        scanf("%d",&(*L)->data[i]);    }    (*L)->len=n;}int Location_SeqList(SeqList *L,int x)//在顺序表中查找元素{    int i=1;    while(i<L->len&&L->data[i]<x)        i++;    if(L->data[i]>=x)        return i;    else return L->len+1;}void Insert_SeqList(SeqList *L,int i,int x)//在顺序表中插入元素{    int j;    if(L->len==MAXSIZE-1)    {        printf("The list is full!\n");    }    else        if(i<1||i>L->len+1)            printf("The position is invalid!\n");        else        {            for(j=L->len;j>=i;j--)            {                L->data[j+1]=L->data[j];            }            L->data[i]=x;            L->len++;        }}void print(SeqList *L)//顺序表的输出{    int i;    for(i=1;i<=L->len;i++)    {        printf("%d\n",L->data[i]);    }    //printf("\n");}int main(){    int i,x;    SeqList *s;    s = Init_SeqList();    CreatList(&s);    scanf("%d",&x);    i=Location_SeqList(s, x);    Insert_SeqList(s, i, x);    print(s);    return 0;}
0 0
原创粉丝点击