Java教程

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

本文主要是介绍顺序表的插入运算 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;
 }

这篇关于顺序表的插入运算 NOJ1 西工大 数据结构的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!