第三周项目4(2)-顺序表应用 将所有奇数移到所有偶数前面
生活随笔
收集整理的這篇文章主要介紹了
第三周项目4(2)-顺序表应用 将所有奇数移到所有偶数前面
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
/*
copyright (t) 2016,煙臺大學(xué)計算機學(xué)院
*All rights reserved.
*文件名稱:1.cpp
*作者:邵雪源
*完成日期:2017年9月19日
*版本號:v1.0
*問題描述:將所在奇數(shù)移到所有偶數(shù)的前面,要求算法的時間復(fù)雜度為O(n),空間復(fù)雜度為O(1)。
*輸入描述:線性表長度、線性表中各元素
*程序輸出:調(diào)整順序后的線性表
*/
#include <iostream>
#include <malloc.h>
#include <cstdio>
using namespace std;
#define Maxsize 100
typedef int Elemtype; //自定義數(shù)據(jù)類型
typedef struct list
{Elemtype data[Maxsize]; //存順序表元素int length; //存順序表長度
} Sqlist;
void CreateList(Sqlist *&l,Elemtype a[],int n) //由a中的n個元素建立順序表
{int i;l=(Sqlist *)malloc(sizeof(Sqlist)); //分配存儲空間for(i=0;i<n;i++)l->data[i]=a[i]; //存放元素l->length=n; //設(shè)置長度
}
void DispList(Sqlist *l) //輸出線性表
{int i;for(i=0;i<l->length;i++)printf("%d ",l->data[i]);printf("\n");
}
void movejs(Sqlist *&l) //移動奇數(shù)
{int i=0,j=l->length-1;Elemtype t;while (i<j){while ((i<j) && (l->data[j]%2==0)) //從右往左遍歷找第一個奇數(shù)j--;while ((i<j) && (l->data[i]%2==1)) //從左往右遍歷找第一個偶數(shù)i++;if (i<j) //如果未到達(dá)“分界線”,將上述循環(huán)中找到的奇數(shù)和偶數(shù)交換{t=l->data[i];l->data[i]=l->data[j];l->data[j]=t;}}
}int main()
{int i,Llength;Sqlist *l;Elemtype a[Maxsize];printf("請輸入線性表長度:\n");scanf("%d",&Llength);printf("請輸入線性表中各元素:\n");for(i=0;i<Llength;i++)scanf("%d",&a[i]);CreateList(l,a,Llength);movejs(l);DispList(l);return 0;
} //移動奇數(shù)
總結(jié)
以上是生活随笔為你收集整理的第三周项目4(2)-顺序表应用 将所有奇数移到所有偶数前面的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第3周实践项目5 -顺序表的应用 拆分单
- 下一篇: 第3周实践项目1 顺序表的基本运算