⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exer5.cpp

📁 链表排序
💻 CPP
字号:
// exer5.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "malloc.h"
#include "memory.h"
#include "stdlib.h"
#include "time.h"
#include "stdio.h"

typedef struct	{
	unsigned short	A;	//百位
	unsigned short	B;	//十位
	unsigned short	C;	//个位
}Digital_t;

typedef struct	{
	Digital_t		DigInfo;
	unsigned short	Data;		//数据
	unsigned short 	Key;
}Hundred_t;

#define Divide(pData)	\
			(pData)->DigInfo.A = (pData)->Data / 100;	\
			(pData)->DigInfo.B = ((pData)->Data - (pData)->DigInfo.A * 100) / 10;	\
			(pData)->DigInfo.C = (pData)->Data - ((pData)->DigInfo.A * 100) - ((pData)->DigInfo.B *10); 
				
				
// Function Declaration
int DigitalSort(Hundred_t *pDataList, int num);
int sort(Hundred_t *pDataList,  int num);
int output(Hundred_t *pDataList, int iDataNum );

int main(int argc, char* argv[])
{
	int			iDataNum, iDataSize;
	int			i;
	long		seed;
	Hundred_t	*pDataList = NULL;

	printf("Please input number of input Data :\n");
	scanf("%d", &iDataNum);

	iDataSize = sizeof(Hundred_t) * iDataNum;
	pDataList = (Hundred_t	*) malloc(iDataSize);
	if (pDataList ==NULL)	{
		return -1;
	}
	memset((void *)pDataList, 0, iDataSize);

	//printf("Please input Data1.Data2.... :\n"); 
	// input
	srand((unsigned) time(&seed));
	for (i = 0; i < iDataNum; i++)
	{
		//scanf("%d", &((pDataList + i)->Data));
		(pDataList + i)->Data = rand()/100;
	}
	
	// sort
	DigitalSort(pDataList, iDataNum);

	// output
	output(pDataList,iDataNum);

	free(pDataList);
	getchar();
	return 0;
}

// sort function
int DigitalSort(Hundred_t *pDataList, int num)
{
	int i;

	// divide digital
	for ( i= 0; i <num; i++)
	{
		Divide(pDataList+i);
	}

	//个位
	for ( i= 0; i <num; i++)
	{
		(pDataList+i)->Key = (pDataList+i)->DigInfo.C;
	}
	sort(pDataList, num);
//	output(pDataList,num);

	//十位
	for ( i= 0; i <num; i++)
	{
		(pDataList+i)->Key = (pDataList+i)->DigInfo.B;
	}
	sort(pDataList, num);
//	output(pDataList,num);

	//百位
	for ( i= 0; i <num; i++)
	{
		(pDataList+i)->Key = (pDataList+i)->DigInfo.A;
	}
	sort(pDataList, num);
//	output(pDataList,num);


	return 0;
}

int sort(Hundred_t *pDataList,  int num)
{
	int			i,j;
	Hundred_t	PD;

	for (i=0; i<num-1; i++)
	{
		for (j=0; j<num-1-i; j++)
		{
			if ((pDataList+j)->Key > (pDataList+j+1)->Key)
			{
				PD = *(pDataList + j);
				*(pDataList + j) = *(pDataList + j +1);
				*(pDataList + j +1) = PD;
			}
		}
	}
	return 0;
}

int output(Hundred_t *pDataList, int iDataNum )
{
	int i;

	for (i = 0; i < iDataNum; i++)
	{
		printf("%d ", (pDataList + i)->Data);
	}

	printf("\n");

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -