顺序表的插入运算 NOJ1 西工大 数据结构

顺序表的插入运算 NOJ1 西工大 数据结构

代码如下

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 //线性表的最大长度
#define ERROR 0
#define OK 1

typedef int ElemType;
typedef struct
{
    ElemType elem[MAXSIZE]; //线性表占用的数组空间
    int last;               //线性表最后一个元素在数组中的位置下标值,空表置为-1;
 }SeqList;

 int InsList(SeqList *LA, int i,ElemType e) //顺序表LA,插入位置i,插入元素e;
 {
     if (LA->last>MAXSIZE-2)
     {
        printf("表已满,无法插入");
         return (ERROR);
     }
     if ((i<1)||(i>LA->last+2)) //判断插入位置是否合法
     {
         printf("插入位置不合法");
         return (ERROR);
     }

     for (int k = LA->last; k >= i - 1;k--) //为插入元素而移动位置
     {
         LA->elem[k + 1] = LA->elem[k];
    }
    LA->elem[i - 1] = e;
    LA->last++;
    return (OK);
 }
int Locate(SeqList LA,ElemType e)  //线性表LA;插入元素e;查找需要插入的位置;
{
   int i=LA.last;
    while (LA.elem[i]>=e)
        i--;
    if (i<=LA.last)
        return(i+2);
    else
        return(-1);
}
 int main()
 {
    int e,num;  //元素个数num; 插入元素e;
    SeqList LA;
    scanf("%d",&num);
    LA.last=-1;
    LA.last+=num;
    for (int a=0;a<=LA.last;a++)
    {
        scanf("%d",&LA.elem[a]);
    }
    scanf("%d",&e);
    Locate(LA,e);
    InsList(&LA,Locate(LA,e), e);
    for (int b=0;b<=LA.last;b++)
    {
        printf("%d ",LA.elem[b]);
    }
    return 0;
 }

上一篇:线性表的顺序表示和实现


下一篇:Web前端之HTML取色器