昆仑山:眼中无形心中有穴之穴人合一

夫君子之行,静以修身,俭以养德;非澹泊无以明志,非宁静无以致远。夫学须静也,才须学也;非学无以广才,非志无以成学。怠慢则不能励精,险躁则不能冶性。年与时驰,意与岁去,遂成枯落,多不接世。悲守穷庐,将复何及!

 

数据结构(C语言版):排序

StaticLinkList.h

#pragma once
#include<cstdio>

// 默认静态链表最大容量
#define maxSize 100
// 假定的最大值
#define maxValue 32767
//假定关键码类型int
typedef int DateType;
// 静态链表结点的类型定义
typedef struct {
	DateType data; //元素
	int link; //节点的链接指针
}SLNode;

// 静态链表的类型定义
typedef struct {
	SLNode element[maxSize];	//存储待排序元素的向量
	int n;	//当前元素个数
}StaticLinkList;

void CreateSList(StaticLinkList& SL, DateType a[], int n) {
	/*
	从输入数组a创建带头节点的静态链表SL,头结点在SL.element[0],n是表长度
	*/
	for (size_t i = 0; i < n; i++) //构建链表
	{
		SL.element[i + 1].data = a[i];
		SL.element[i + 1].link = i + 2;
	}
	SL.element[0].data = maxValue;//头结点存入最大值
	// 构成循环单链表
	SL.element[0].link = 1;
	SL.element[n].link = 0;
	SL.n = n;
}




//输出
void OutputSList(StaticLinkList&SL) { 
	for (size_t i = SL.element[0].link; i!=0; i=SL.element[i].link)
	{
		printf("%d\t", SL.element[i].data);
	}
	putchar(10);
}


DataList.h

#pragma once

#include<stdio.h>
#include<cstdlib>
#define maxSize 20

typedef int DateType; //元素数据类型
typedef struct { //数据表的类型定义
	DateType data[maxSize];//排序元素数组
	int n; //排序元素个数
}DataList;


void Swap(DataList&L, int i, int j) {
	if (i>=0&&i<L.n&&j>=0&&j<L.n) {
		//交换L.data[i]和 L.data[j]中的内容
		DateType temp = L.data[i];
		L.data[i] = L.data[j];
		L.data[j] = temp;
	}
}

void InsertSort(DataList& L) {
	/*
	依次将元素L.data[i] 按其排序码插入到有序表L.data[0],L.data[1],...,L.data[i-1]中
	使得L.data[0]到L.data[i]有序。让i=1到i=L.n-1 重复插入,最终完成排序
	*/
	DateType temp;
	int i, j;
	for (i = 1; i <= L.n - 1; i++)
	{
		//逆序寻找插入位置,否则留置原位
		if (L.data[i] < L.data[i - 1]) {
			temp = L.data[i]; //暂存待插入元素

			for (j = i - 1; j >= 0 && temp<L.data[j]; j--)
			{
				L.data[j + 1] = L.data[j]; //逆向寻找temp插入位置
			}
			L.data[j + 1] = temp;  //插入
		}
	}
}


驱动测试


#include<stdio.h>
#include<cstdlib>
#include"StaticLinkList.h"
#include"DataList.h"

int main()
{

	int elements[] = { 34,56,78,78,54,34 };

	StaticLinkList staticLinkList;
	CreateSList(staticLinkList, elements, sizeof(elements)/sizeof(elements[0]));

	OutputSList(staticLinkList);

	system("pause");
}


posted on 2019-04-26 18:06  Indian_Mysore  阅读(169)  评论(0编辑  收藏  举报

导航