順序表--奇數在前,偶數在後

#include<stdio.h>
#include<stdlib.h>

typedef struct 
{
	int data[10];
	int length;
}Sqlist;


void CreateList(Sqlist *&L)
{
	int i = 0;
	int len = 0;
	int a[5];
	L = (Sqlist*)malloc(sizeof(Sqlist));
	while( i < 5)
	{
		scanf("%d",&a[i]);
		L->data[i] = a[i];
		i++;
		len++;
		
	}
	L->length = len;
 } 


void move(Sqlist *&L)  
{
	int i=-1,j;
	int tmp;
	for( j=0; j<L->length-1;j++)
	{
		if(L->data[j]%2==1)
		{
			i++;
			if(i!=j)
			{
				tmp = L->data[i];
				L->data[i] = L->data[j];
				L->data[j] = tmp;
			}
		}
	}
}
void Display(Sqlist *L)
{
	int i;
	for( i = 0; i < L->length; i++)
	{
		printf("%d ",L->data[i]);
		
	}
	printf("\n");
}

int main()
{
	int i;
	Sqlist *L;
	CreateList(L);
	
	printf("L: ");
	Display(L);
	move(L);
	printf("L: ");
	Display(L);
	return 0;
}
#include<stdio.h>
#include<stdlib.h>

typedef struct 
{
	int data[10];
	int length;
}Sqlist;


void CreateList(Sqlist *&L)
{
	int i = 0;
	int len = 0;
	int a[5];
	L = (Sqlist*)malloc(sizeof(Sqlist));
	while( i < 5)
	{
		scanf("%d",&a[i]);
		L->data[i] = a[i];
		i++;
		len++;
		
	}
	L->length = len;
 } 


void move(Sqlist *&L)  
{
	int a,i,j;
	int temp;
	i = 1;
	j = L->length-1;
	
	a = L->data[0];
	while(i < j)
	{
		
		while( i < j && L->data[j]%2==0)    //必須是從後邊開始找 
			j--;
		
		while( i < j && L->data[i]%2!=0)
			i++;
		
		if( i < j)
		{
			temp = L->data[i];
			L->data[i] = L->data[j];
			L->data[j] = temp;
		}
	}
	
	temp = L->data[0];
	L->data[0] = L->data[j];
	L->data[j] = temp;
}
void Display(Sqlist *L)
{
	int i;
	for( i = 0; i < L->length; i++)
	{
		printf("%d ",L->data[i]);
		
	}
	printf("\n");
}

int main()
{
	int i;
	Sqlist *L;
	CreateList(L);
	
	printf("L: ");
	Display(L);
	move(L);
	printf("L: ");
	Display(L);
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章