c语言:顺序表的实现(三)将元素e插入到一个递减有序表中,不改变顺序表的递减有序性。

#include<iostream>
#include<stdio.h>
#define LIST_INIT_SIZE 100
using namespace std;
struct Node
{ 
	int *elem;
	int Length;
	int Listsize;
};

void Error(char *s)  //错误处理函数
{
	cout << s << endl;
	exit(1);
}
void InitNode(Node &L) //初始化函数
{
	L.elem = new int[LIST_INIT_SIZE];
	if (!L.elem)
		Error("Overflow!");
	L.Length = 0;
	L.Listsize = LIST_INIT_SIZE;
}
void CreatNode(Node &l) //创建顺序表
{
	int n;
	cout << "请输入元素个数:";
	cin >> n;
	cout << "请输入数据元素:" << endl;
	for (int i = 0; i < n; i++)
	{
		cin >> l.elem[i];
		l.Length++;
	}
	cout << "顺序表创建成功!" << endl;
}


void printNode(Node &l) //输出函数
{
	for (int i = 0; i < l.Length; i++)
	{
		cout << l.elem[i]<<" ";
	}
	cout << endl;
}

void IncreaseNode(Node &l, int e)//将元素e插入到
{
	if (l.Length >= l.Listsize)
		Error("Linear List overflow!");
	for (int i = l.Length; (i > 0) && (l.elem[i - 1]<e); i--)
	{
		l.elem[i] = l.elem[i - 1];
		l.elem[i - 1] = e;
	}
	l.Length++;
}
void Bublesort(Node &l) //冒泡排序法递减排序
{
	int i, j, k;
	for (j = 0; j<l.Length; j++) // 气泡法要排序n次
	{
		for (i = 0; i<l.Length - j; i++) // 值比较下的元素沉下去后,只把剩下的元素中的最大值再沉下去就可以啦 
		{
			if (l.elem[i]<l.elem[i + 1]) //把值比较小的元素沉到底 
			{
				k = l.elem[i];
				l.elem[i] = l.elem[i + 1];
				l.elem[i + 1] = k;
			}
		}
	}
}
int main()
{
	Node t;
	int n;
	InitNode(t);
	CreatNode(t);
	printNode(t);
	Bublesort(t);
	printNode(t);
	cout << "请输入要插入的元素:";
	cin >> n;
	IncreaseNode(t, n);
	printNode(t);
	return 0;
}

你可能感兴趣的:(数据结构,编程语言,C语言)