顺序表有序插入
/
#include <stdio.h>
#include <stdlib.h>
typedef int DataType;
typedef int ElemType;
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct
{
ElemType* elem;
int length;
int listsize;
}SqList;
void InitList(SqList* L)
{
L->elem = (ElemType*)malloc(LIST_INIT_SIZE * sizeof(ElemType));
L->length = 0;
L->listsize = LIST_INIT_SIZE;
}
void CreateList(SqList* L, int n)
{
InitList(L);
int i;
for (i = 0; i < n; i++)
{
scanf_s("%d", &L->elem[i]);
L->length++;
}
}
void InsertList(SqList* L, int e)
{
int i;
for(int i=0;i<L->length;i++)
if(e < L->elem[i])
{
for (int j = L->length-1; j >= i; j--)
{
L->elem[j + 1] = L->elem[j];
}
L->elem[i] = e;
break;
}
else L->elem[L->length] = e;
L->length++;
}
void ListTraverse(SqList* L)
{
int n = L->length, i;
for (i = 0; i < n; i++)
printf("%d\n", L->elem[i]);
}
int main()
{
SqList L;
int n;
scanf_s("%d", &n);
CreateList(&L, n);
int e;
scanf_s("%d", &e);
InsertList(&L, e);
ListTraverse(&L);
return 0;
}