数据结构之测试代码终篇

转眼间数据结构课程就要结束了,最后跟大家分享一次代码~~~ ~~~~

数据结构之测试代码终篇_第1张图片

  1. 十进制转化成二进制非递归实现
  2. 十进制转化成二进制递归实现
  3. 斐波那锲数列非递归实现
  4. 斐波那锲数列递归实现
  5. 直接插入排序
  6. 快速排序
  7. 简单选择排序
  8. 大数加法

1.十进制转化成二进制非递归实现

#include
using namespace std;
 
const int maxn=1000;
 
int a[maxn];
 
 
int main(){
	int n,t;
	while(~scanf("%d",&n)){
		if(n==0){
			printf("0\n");
			continue;
		} 
		t=0;
		while(n!=0){
			a[t]=n%2;
			n/=2;
			t++;
		}
		for(int i=t-1;i>=0;i--)
			printf("%d",a[i]);
		printf("\n");
	}
	return 0;
}

 

2.十进制转化成二进制递归实现

#include
using namespace std;
 
int Fib(int i){
	int b;
    b = i%2;
    if(i<2){
        printf("%d",b);
    }else{
        i = i/2;
        Fib(i);
        printf("%d",b);
    }
}
 
int main(){
	int n;
	while(~scanf("%d",&n)){ 
		Fib(n);
		printf("\n");
	} 
	return 0;
}

 

 

3.斐波那锲数列非递归实现

#include
using namespace std;

int main(){
	int a1=1,a2=1,a,k;
	while(true){
		printf("请输入你想知道斐波那锲数列的第几项:");
		cin >> k;
		if(k==1 || k==2) cout << 1 <

4.斐波那锲数列递归实现

数据结构之测试代码终篇_第2张图片

#include
using namespace std;

int Fib(int n){
	if(n==1||n==2) return 1;
	else return Fib(n-1)+Fib(n-2);
}

int main(){
	int n;
	while(true){
		printf("请输入你想知道斐波那锲数列的第几项:");
		scanf("%d",&n);
		printf("%d\n",Fib(n)); 
	}
	return 0;
}

5.直接插入排序

#include
using namespace std;

#define ll long long
#define random(x) (rand()%x)
#define maxn 10000

ll length=maxn;
ll a[maxn+10];

void sort(){
	int i,j;
	for(i=2;i<=length;i++){
		if(a[i]

6.快速排序

#include 
using namespace std;

#define ll long long
#define maxn 10000

ll length=maxn;
ll a[maxn+10];

int Partition(int low,int high)
{
	a[0]=a[low];
	int key=a[low];
	while(low < high) 
	{
		while(low=key)  --high;
	    a[low] = a[high];
		while(low

7.简单选择排序

#include
using namespace std;

#define ll long long
#define random(x) (rand()%x)
#define maxn 10000

ll length=maxn;
ll a[maxn+10];

void SelectSort()
{
	int i,j,t; 
	for(i=1;i

8.大数加法

#include
using namespace std; 
 
const int Max=10000;
int a[Max], b[Max];
 
void BiggerPlus(string s1, string s2){
	int len1, len2;
	len1 = s1.size();
	len2 = s2.size();
	//初始化
	memset(a, 0, sizeof(a));
	memset(b, 0, sizeof(b));
	//读数据,s1的最后位保存在数组中的开始部分
	for (int i = len1 - 1, k = 0; i != -1;--i){
		a[k] = s1[i] - '0';
		++k;
	}
	for (int j = len2 - 1, k = 0; j != -1; --j){
		b[k] = s2[j] - '0';
		++k;
	}
	//做加法
	int up = 0;
	for (int i = 0; i < Max; ++i){
		a[i] = a[i] + b[i] + up;
		up = a[i] / 10;
		a[i] = a[i] % 10;
	}
	//从右向左找到a数组中第一个不为0的数
	int k = Max-1;
	while (a[k] == 0)
		--k;
	//从右边第一个不为0的数开始,向左输出数组
	for (int i = k; i != -1; --i)
		cout << a[i];
	return;
}

int main(){
	string s1,s2;
	cin>>s1>>s2;
	BiggerPlus(s1,s2);
	return 0;
}

 

你可能感兴趣的:(数据结构篇)