《数据结构》--严蔚敏 静态链表排序 p270

// exam1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <stdio.h>
using namespace std;

typedef struct
{
	int data;
	int index;
}ELEM;

int main(void)
{
	ELEM s[11];
	int a[10]={1,45,21,20,10,75,9,100,-13,19};

	for(int i=1;i<11;i++)
	{
		s[i].data=a[i-1];
		s[i].index=0;
	}
	s[0].data=10000;
	s[0].index=1;
	s[1].index=0;

	for(int i=2;i<11;i++)
	{
		int temp=s[i].data;
		int p=0;
		int q;
		q=s[p].index;
		while(1)
		{
			if(s[q].data<=temp)
			{
				p=q;
				q=s[q].index;
				if(q==0)
				{
					break;
				}
			}
			else
			{
				break;
			}	
		}
		s[i].index=q;
		s[p].index=i;
	}

	int p=0;
	int q;
	q=s[p].index;
	while(q!=0)
	{
		cout<<s[q].data<<" ";
		q=s[q].index;
	}
	cout<<endl;

	p=0;
	for(int i=1;i<11;i++)
	{
		while(p<i)
		{
			p=s[p].index;
		}

		int temp;
		temp=s[i].data;
		s[i].data=s[p].data;
		s[p].data=temp;
	
		temp=s[p].index;
		s[p].index=s[i].index;
		s[i].index=p;
		p=temp;	
	}

	for(int i=1;i<11;i++)
	{
		cout<<s[i].data<<" ";
	}
	cout<<endl;

	system("pause");
	return 0;
}

相关文章

【啊哈!算法】算法3:最常用的排序——快速排序       ...
匿名组 这里可能用到几个不同的分组构造。通过括号内围绕的正...
选择排序:从数组的起始位置处开始,把第一个元素与数组中其...
public struct Pqitem { public int priority; ...
在编写正则表达式的时候,经常会向要向正则表达式添加数量型...
来自:http://blog.csdn.net/morewindows/article/details/6...