顺序表的有序插入操作

6-4 顺序表的有序插入操作

分数 10

作者 DS课程组

单位 临沂大学

本题要求实现一个函数,要求将指定元素插入到有序表的合适位置,使得插入后仍然保持有序,若插入失败返回0;插入成功则返回1,并且顺序表的长度加1.

 

函数接口定义:

int SqInsert(SqList &L,ElemType e);

其中SqList结构定义如下:

 

typedef struct{

    ElemType *elem;

    int length;

 }SqList;

裁判测试程序样例:

#include <stdio.h>

#include <stdlib.h>

#define MAXSIZE 5

typedef int ElemType;

typedef struct{

    ElemType *elem;

    int length;

}SqList;

void InitList(SqList &L);/*函数的实现此处不再显示*/

int SqInsert(SqList &L,ElemType e);

int main()

{

    SqList L;

    InitList(L);

    ElemType e;

    scanf("%d",&e);

    int result=SqInsert(L,e);

    if(result==0){

        printf("Insertion Error.The storage space is full!");    

    }else if(result==1){

        printf("Insertion Success.The elements of the SequenceList L are:");    

        for(int j=0;j<L.length;j++){

            printf(" %d",L.elem[j]);

        }

    }

    return 0;

}

   

/* 请在这里填写答案 */

输入格式:

输入数据有1行,首先给出以-1结束的非递减顺序表元素值(不超过100个,-1不属于顺序表元素,),然后是被插入元素值。所有数据之间用空格分隔。

 

输入样例:

4 8 20 -1 10 

 

输出样例:

Insertion Success.The elements of the SequenceList L are: 4 8 10 20

 

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

C++ (g++)

 

//判断满:L.length=MAXSIZE return 0 ;

//不满:

//循环:将大于e的数下移

//fot(i=L.length-1;i>=&&L.elem[i]>e;i--)

int SqInsert(SqList &L,ElemType e)

{

    int i;

    if(L.length==MAXSIZE) return 0;

    else

    {

        for(i=L.length-1;i>=0&&L.elem[i]>e;i--)

        {

            L.elem[i+1]=L.elem[i];

        }

        L.elem[i+1]=e;

        L.length++;

        return 1;

    }

}

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值