前提说明:
此次数据结构期末上机考试是同学们从八道题目中抽取三道作答,笔者把此次八道题目的参考代码统一贴出方便同学们复习。
注:
所有代码均在while(1)
中运行
一、斐波那契数列(递归)
#include
using namespace std;
int Fibonacci(int n){
if(n==1||n==2) return 1;
return Fibonacci(n-1)+Fibonacci(n-2);
}
int main(){
int n;
while(1){
cin>>n;
cout<
二、斐波那契数列(非递归)
#include
using namespace std;
int fibonacci[50];
void Fibonacci(){
int i;
fibonacci[1]=1;
fibonacci[2]=1;
for(i=3;i<=46;i++)
fibonacci[i]=fibonacci[i-1]+fibonacci[i-2];
}
int main(){
int n;
Fibonacci();
while(1){
cin>>n;
cout<
三、十进制转二进制(递归)
#include
using namespace std;
void Transformation(int n){
if(n>1) Transformation(n/2);
cout<>n;
Transformation(n);
cout<
四、十进制转二进制(非递归)
#include
#include
using namespace std;
stack s;
void Transformation(int n){
while(n){
s.push(n%2);
n/=2;
}
}
void Result(){
while(!s.empty()){
cout<>n;
Transformation(n);
Result();
}
return 0;
}
五、大整数A+B
#include
#include
#include
using namespace std;
#define MAXSIZE 10000
char aa[MAXSIZE],bb[MAXSIZE];
int a[MAXSIZE],b[MAXSIZE],c[MAXSIZE];
int main(){
while(1){
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
cin>>aa>>bb;
int la=strlen(aa),lb=strlen(bb);
int i,j;
for(i=la-1,j=0;i>=0;i--,j++) a[j]=aa[i]-'0';
for(i=lb-1,j=0;i>=0;i--,j++) b[j]=bb[i]-'0';
int lc=max(la,lb),p,r=0;
for(i=0;i=0;i--) cout<
六、直接插入排序
#include
using namespace std;
#define MAXSIZE 20
typedef struct{
int r[MAXSIZE+1];
int length;
}SqList;
void InitSqList(SqList &L){
int n,i;
cin>>n;
L.length=n;
for(i=1;i<=n;i++)
cin>>L.r[i];
}
void StraightInsertionSort(SqList &L){
int i,j;
for(i=2;i<=L.length;i++){
if(L.r[i]
七、快速排序
#include
using namespace std;
#define MAXSIZE 20
typedef struct{
int r[MAXSIZE+1];
int length;
}SqList;
void InitSqList(SqList &L){
int n,i;
cin>>n;
L.length=n;
for(i=1;i<=n;i++)
cin>>L.r[i];
}
int Partition(SqList &L,int low,int high){
L.r[0]=L.r[low];
int pivotloc=L.r[low];
while(low=pivotloc) high--;
L.r[low]=L.r[high];
while(low
八、简单选择排序
#include
using namespace std;
#define MAXSIZE 20
typedef struct{
int r[MAXSIZE+1];
int length;
}SqList;
void InitSqList(SqList &L){
int n,i;
cin>>n;
L.length=n;
for(i=1;i<=n;i++)
cin>>L.r[i];
}
void SimpleSelectionSort(SqList &L){
int i,j,k,t;
for(i=1;i