数据结构学习---线性表顺序存储结构的应用(二):插入操作

顺序表的插入操作:线性表非递减排序,插入一个元素后,使排序仍按照非递减

基本思路:检验插入元素与线性表元素的大小,寻找到合适的位置即插入,注意当插入元素大于最后一个元素和小于第一个元素时,需要单独讨论

void InsertOperate(int *sequence, int &len, int x)
{
	if (x > sequence[len-1]) //插入值比最后一个大
	{
		sequence[len] = x;
		len = len +1;
	}
	if(x < sequence[0])//插入值比第一个小
	{
		for( int j = len-1; j >= 0; j--)
			{
				sequence[j+1] = sequence[j];
			}
		sequence[0] = x;
		len = len +1;
	}

	for(int i = 1; i < len; i++)
	{
		if(sequence[i-1] < x && sequence[i] > x)
		{
			for( int j = len-1; j >= i; j--)
			{
				sequence[j+1] = sequence[j];
			}
			sequence[i] = x;
		    len = len +1;
		}
		
	}
}
附上整体程序:

//顺序表的删除操作(删除值为x的元素,假设线性表中有若干个x元素)

#include <iostream>
#include <vector>
using namespace std;



//插入元素:线性表非递减排序,插入一个元素后,使排序仍按照非递减
void InsertOperate(int *sequence, int &len, int x)
{
	if (x > sequence[len-1]) //插入值比最后一个大
	{
		sequence[len] = x;
		len = len +1;
	}
	if(x < sequence[0])//插入值比第一个小
	{
		for( int j = len-1; j >= 0; j--)
			{
				sequence[j+1] = sequence[j];
			}
		sequence[0] = x;
		len = len +1;
	}

	for(int i = 1; i < len; i++)
	{
		if(sequence[i-1] < x && sequence[i] > x)
		{
			for( int j = len-1; j >= i; j--)
			{
				sequence[j+1] = sequence[j];
			}
			sequence[i] = x;
		    len = len +1;
		}
		
	}
}

void PrintElement(int *sequence, int len)
{
	for(int count = 0; count < len; count++)
		cout << sequence[count] << " " ;
}

int main ()
{
	int len = 6;
	int sequence[6] = {1,2,2,4,5,6};
	int *seq = &sequence[0];
	PrintElement(seq, len);
	//DeleteOperate(seq,len, 2);
	InsertOperate(seq, len, 3);
	cout << endl;
	PrintElement(seq, len);
	
	system("pause");
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值