问题:插入一个数到顺序表

题目:

已知一个顺序表L,其中的元素递增有序排列,设计一个算法,插入一个元素x(x为int型)后保持该顺序表仍然递增有序排列。

#include<iostream>

using namespace std;

template<class T>
int arryLength(T &arr)
{
	return sizeof(arr) / sizeof(arr[0]);
}
void test01(const int &x, int a[],int length)
{
	int flag = true;
	int tmp = 0;
	//cout << length << endl;
	for (int i = 0; i <= 9; i++) {
		if (a[i] <= x && flag) {
			cout << a[i] << endl;
			continue;
		}
		if(a[i] >= x && flag) {
			cout << i << endl;
			tmp = a[i];
			a[i] = x;
			flag = false;
			cout << flag << endl;
			continue;
		}
		if (!flag) {
			int tmp_2 = a[i];
			cout << i << endl;
			a[i] = tmp;
			tmp = tmp_2;
		}
	}
}

template<class T>
void printArry(const T & a)
{
	for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++) {
		cout << a[i] << " " ;
	}
	cout << endl;
}

int main()
{
	int a[10] = { 1,2,3,4,5,6,8 };
	int x = 3;
	int length = arryLength(a);

	test01(x, a,length);
	printArry(a);

	system("pause");
	return 0;
}

//在一个循环中完成操作;

重点1:

c++中计算数组的长度应该用模板,防止数组被降为整形指针。

template<class T>
void printArry(const T & a)
{
	for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++) {
		cout << a[i] << " " ;
	}
	cout << endl;
}
template<class T>
int arryLength(T &arr)
{
	return sizeof(arr) / sizeof(arr[0]);
}

重点2:

flag标记动作的状态,可以进入不同的操作;

重点3:

前后相互交换的算法;

发布了158 篇原创文章 · 获赞 37 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/XUCHEN1230/article/details/86546836