查子系统

1.实验内容或题目
1)编写顺序查程序。 
2)编写二分查程序。 
3)编写建立二叉排序树的程序。 
4)编写在二叉排序树上的查、插入、删除结点的程序。 
5)编写使二叉排序树中序输出的程序。 
6)设计一个选择式菜单一级菜单形式如下     
                  查 子 系 统       
******************************************       
*          1------顺  序  查            *       
*          2------二  分  查            *       
*          3------二 叉 排 序 树          *       
*          0------返          回          *
******************************************
请选择菜单号(0--3)   
索爱m600i
二叉排序树二级子菜单如下
二叉排序树       
*******************************************       
*          1------更新二叉排序树          *       
*          2------查    结  点          *       
*          3------插  入  结  点          *       
*          4------删  除  结  点          *       
*          5------中序输出排序树          *       
*          0------返          回          *
*******************************************
请选择菜单号(0--5)
2.实验目的与要求
1.通过查实验理解查的基本算法。
2.熟悉各种查方法的适用场合及平均查长度。
3.掌握静态查和动态查的区别。
4.掌握顺序查、二分查的基本思想及其算法。
5.掌握二叉排序树基本思想及其算法。
3.实验步骤与源程序
实验步骤:
1.从具体问题抽象出适当的数学模型
2.设计求解数学模型的算法
3.编制、运行并调试程序,直到解决实际问题。
源代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXLEN 100
#define N 10
void SeqSearch()                 
{
    int a[N],i,x,y;
    char ch;
    printf("\n\t\t建立一个整数的顺序表(以回车为间隔,以-1结束):\n");
    for (i=0;i<MAXLEN;i++)
    {
        printf("\t\t");
        scanf("%d",&a[i]);
        getchar();
        if (a[i]==-1)
        {   
            y=i;break;   
        }
    }
    printf("\n\t\t需要查请输入Y,否则输入N:");
    scanf("%c",&ch);
    while(ch=='y'||ch=='Y')
江西泰和在线论坛    {
        printf("\n\t\t请输入要查的数据: ");
        scanf("%d",&x);getchar();
甾醇
        i=y-1;
南方护理学报        while(i>=0&&a[i]!=x)       
            i--;
        if(i==-1)
            printf("\n\t\t抱歉!没有您要查的数据. \n");
        else
            printf("\n\t\t您要查的数据在第 %d 个位置上. \n",i+1);
        printf("\n\t\t继续查输入Y,否则输入N:");
        scanf("%c",&ch);
冷轧不锈钢
    }
}
void BinSearch()                       
{
    int R[MAXLEN],i,k,low,mid,high,m,nn;
    char ch;
    printf("\n\t\t先建立递增有序的查顺序表(以回车符间隔,以-1结束) :\n");
    for(i=0;i<MAXLEN;i++)
    {  printf("\t\t");
        scanf("%d",&R[i]);
        getchar();
        if(R[i]==-1)
        {  nn=i;break;}
    }
    printf("\n\t\t查请输入Y,退出输入N:");
    scanf("%c",&ch);
    getchar();
    while(ch=='y'||ch=='Y')
    {    printf("\n\t\t请输入要查的数据:");
        scanf("%d",&k);
        getchar();
        low=0;
        high=nn-1;
        m=0;   
        while(low<=high)
        {  mid=(low+high)/2;
            m++;
            if(R[mid]>k)
                high=mid-1;
            else
                if(R[mid]<k)
                    low=mid+1;
                else
                    break;
        }
        if(low>high)
福克纳        {
            printf("\n\t\t抱歉!没有您要查的数据.\n");
            printf("\n\t\t共进行%d次比较.\n",m);
            if(R[mid]<k)
                mid++;
            printf("\n\t\t可将此数插入到第%d个位置上.\n",mid+1);
        }
        else
        {
            printf("\n\t\t要的数据%d在第%d个位置上.\n",k,mid+1);
            printf("\n\t\t共进行%d次比较.\n",m);
        }
        printf("\n\t\t继续查输入Y,否则输入N:");
        scanf("%c",&ch);getchar();
    }
}
typedef int KeyType;
typedef struct node                     
{
    KeyType key;
    struct node *lchild,*rchild;
}BSTNode;
typedef BSTNode *BSTree;
BSTree CreateBST(void);                 
void SearchBST(BSTree T,KeyType Key);   
void InsBST(BSTree *Tptr,KeyType Key);   
void DelBSTNode(BSTree *Tptr,KeyType Key);
void InorderBST(BSTree T);               
void BTSearch()
{
    BSTree T;
    char ch1,ch2;
    KeyType Key;
    printf("\n\t\t建立一棵二叉树的二叉链表存储\n");
    T=CreateBST();ch1='y';
    getchar();
    while(ch1=='y'||ch1=='Y')
    {
        printf("\n\t\t            二  叉  排  序  树            ");
        printf("\n\t\t********************************************");
        printf("\n\t\t*          1-------更新二叉排序树          *");
        printf("\n\t\t*          2-------查    结  点          *");
        printf("\n\t\t*          3-------插  入  结  点          *");
        printf("\n\t\t*          4-------删  除  结  点          *");
        printf("\n\t\t*          5-------中序输出排序树          *");
        printf("\n\t\t*          0-------返          回          *");

本文发布于:2024-09-21 23:27:29,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/397857.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:查找   输入   实验
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议