数据结构:有序顺序表里插入一个数,使得顺序表依然有序。

废话不多说,直接上程序

#include <stdio.h>
#include <stdlib.h>
#define MaxSize 20
typedef int ElemType;

typedef struct
{
int length;
ElemType data[MaxSize+1];
}SqList;

//为了方便,顺序表的第一个位置不放值,也就是下标为0的
void CreateList(SqList *&L,ElemType a[],int n)
{
int i;
for(i=1;i<=n;i++)
L->data[i]=a[i];
L->length=n;
}
//初始化顺序表,向系统申请空间
void InitList(SqList *&L)
{
L=(SqList *)malloc(sizeof(SqList));
L->length =0;
}
//在有序表中加入一个数,使得表依然有序
bool InsertList(SqList *&L,ElemType e)
{
if(L->length==MaxSize)
return false;
int n=L->length+1;
L->length++;
while(n>=2 && edata[n-1])
L->data[n+1]=L->data[–n];
L->data[n]=e;
return true;
}
//输出线性表长度和元素
void ShowList(SqList *L){
printf(“表长度:%d\n表元素:”,L->length);
for(int i=1;i<=L->length;i++)
printf("%d “,L->data[i]);
printf(”\n\n");
}

void main()
{
SqList *L;
ElemType a[]={0,2,4,6,8,10,12,14};//第一个值0不用
ElemType e=20; //修改e的值可以测试不同的插入位置
InitList(L); //初始化顺序表
CreateList(L,a,7); //给顺序表初始值
ShowList(L); //输出顺序表信息
InsertList(L,e); //插入元素
ShowList(L); //输出顺序表信息
}

初始数据我们给了:2 4 6 8 10 12 14

(1)先测试一下插入表头,插入1,修改e=1

在这里插入图片描述

(2)插入表中,e=5
在这里插入图片描述
(3)插入表尾,e=20
在这里插入图片描述

说明:
(1)其实想要在有序表里插入数据,一般的思路特别简单:
①比较即将插入的数与原来表中的数的大小,找到插入位置(一个循环)。
②顺序表长度+1,把要插入的位置的书以及之后的数全部后移(两个循环)。
③在插入位置插入数据。
所以一般的思路需要有两个循环才能完成这个程序。
(2)本文中的程序只需一个循环即可,方便快捷,具体思路见程序即可。

**注:本程序在VC++6.0程序中成功运行,其他编程平台请自行尝试。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值