设置顺序表L是个递增的有序表,试写一算法将number插入L中,并使L任是一个有序表。

一、实现算法如下:

/*有序顺序表的插入*/
void InsertSqlist(Sqlist *L,Elemtype number)
{
	int i;
	assert(L->length < L->Listsize);  
	//创建表的表长大于或等于初始分配量,则无法进行插入,停止程序
	for(i=L->length;i>0&&L->elem[i-1]>number;i--)
	L->elem[i]=L->elem[i-1];
	L->elem[i]=number;
	L->length++;
}

二、完整程序代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

#define  INIT_SIZE  100  /*顺序表初始分配量*/


typedef  int  Elemtype;
typedef struct {
	Elemtype *elem;       //顺序表存储空间基地址
	int length;            //顺序表当前表长
	int Listsize;          //顺序表存储容量
}Sqlist; 

/*顺序表初始化*/
void InitSqlist(Sqlist *L)
{
	L->elem=(Elemtype*)malloc(sizeof(Elemtype)*INIT_SIZE);
	assert(L->elem != NULL);         //分配初始存储空间失败,停止程序 
	L->length=0;                     //顺序表当前表长为0
	L->Listsize=INIT_SIZE; 
} 
/*有序顺序表的创建*/
void CreateSqlist(Sqlist *L)
{
	int i,n;
	printf("请输入顺序表表长:\n");
	scanf("%d",&n);
	fflush(stdin);
	assert(n <= L->Listsize);       //创建表的表长大于初始分配量,停止程序 
	L->length=n;
	printf("请输入有序顺序表各元素:\n");
	for(i=0;i<n;i++)
	{
		scanf("%d",&L->elem[i]); 
	}
}

/*有序顺序表的插入*/
void InsertSqlist(Sqlist *L,Elemtype number)
{
	int i;
	assert(L->length < L->Listsize);  
	//创建表的表长大于或等于初始分配量,则无法进行插入,停止程序
	for(i=L->length;i>0&&L->elem[i-1]>number;i--)
	L->elem[i]=L->elem[i-1];
	L->elem[i]=number;
	L->length++;
}
/*顺序表的输出*/
void PrintSqlist(Sqlist *L)
{
	int i;
	for(i=0;i<L->length;i++)
	printf("%d ",L->elem[i]);
}

int main()
{
	Elemtype number;
	Sqlist L;
	InitSqlist(&L);
	CreateSqlist(&L);
	printf("请输入插入元素的数据:\n");
	scanf("%d",&number);
	InsertSqlist(&L,number);
	printf("插入后的顺序表为:\n");
	PrintSqlist(&L);
	return 0;	
}

三、运行效果截图:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值