资源简介

计算机专业大二必备的,非常好用的数据结构课程设计 ,代码完美运行,实验报告也是写好了的可以直接用

资源截图

代码片段和文件信息

#include
#include
#include 
#include 
#include
#include
using namespace std;
#define HashSize 50
#define MAX 100
#define LH 1
#define EH 0
#define RH -1
FILE *fp;
int data[20];
int data2[20];

//********************************************************************
int Binary_Search(int keyint lowint high)//折半查找
{
int mid;
if(low == high)
{
if(data[low] == key)
return low;
else
return -1;
}
else
{
mid = (low + high) / 2;
if(mid == low)
mid++;
if(key < data[mid])
return Binary_Search(key low mid - 1);
else
return Binary_Search(key mid high);
}
}

void zheban()
{
int locate;
int key;
    if((fp=fopen(“D:\\编程的文件\\查找算法性能比较\\折半查找.txt““r“))==NULL)
{
    printf(“cannot open file\n“);
}
    for(int i=0;i<20;i++)
fscanf(fp“%d“&data[i]);
fclose(fp);
    printf(“\n有序序列为:\n“);
for(int i=0;i<20;i++)
printf(“%d “data[i]);
    printf(“\n请输入要查找的数: “);
    scanf(“%d“ &key);
    if(key != -1)
    {
        locate = Binary_Search(key019);
        if(locate != -1)
        {
            printf(“\n值%d的位置为:%d\n\n“ key locate+1);
        }
        else
        {
            printf(“没有找到%d\n“ key);
        }
    }
    else
        exit(1);
    cout<}
//************************************************************************
typedef struct
{
    int key;   //关键字
    int data;    //信息域
}Record;                                  //用给定的关键字值与表中其他元素的关键字值比较
typedef struct
{
    Record r[MAX+1];
    int length;
}SqTable;
int search(SqTable sint k)
{
  int i;
  s.r[0].key=k;
  i=s.length;      //自几用的逆序
  while(s.r[i].key!=k)
        i--;
  return i;
}
void sunxu()
{
    SqTable s;
    int wzilenxy;
   printf(“请输入表长:\n“);
    scanf(“%d“&len);
    s.length=len;
    printf(“请输入表的各个元素:\n“);
    for(i=1;i<=len;i++)
    {
        scanf(“%d“&x);
        s.r[i].key=x;
    }
     printf(“请输入要查找的元素:\n“);
    scanf(“%d“&y);
    wz=search(sy);
    if(wz==0)
    {
        printf(“不存在:\n“);
    }
    else
        printf(“位置为:%d“wz);
}
//************************************************************************
void fibonacci(int *f)//斐波那契数
{
f[0] = 1;
f[1] = 1;
for(int i = 2;i < 20;++i)
f[i] = f[i - 2] + f[i - 1];
}
int fibonacci_search(int *aint keyint n)//斐波那契查找
{
int low = 0high = n - 1;
int mid = 0;
int k = 0;
int F[20];
fibonacci(F);
while(n > F[k] - 1) //计算出n在斐波那契中的数列
++k;
for(int i = n;i < F[k] - 1;++i) //把数组补全
a[i] = a[high];
while(low <= high)
{
mid = low + F[k-1] - 1;  //根据斐波那契数列进行黄金分割
if(a[mid] > key)
{
high = mid - 1;
k = k - 1;
}
else if(a[mid] < key)
{
low = mid + 1;
k = k - 2;
}
else{
if(mid <= high) //如果为真则找到相应的位置
return mid;
else
return -1;
}
}
return -1;
}
int Fibonacci()
{
if((fp=fopen(“D:\\编程的文件\\查找算法性能比较\\斐波那契.txt““r“))==NULL

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件      698368  2018-07-10 15:15  报告.doc
     文件          65  2014-05-06 19:06  折半查找.txt
     文件          59  2014-10-29 23:28  散列法.txt
     文件          66  2014-05-06 19:06  斐波那契.txt
     文件       22030  2018-03-30 08:39  1数据结构.cpp

评论

共有 条评论