//折半查找、二叉排序树的建立、查找与删除、链式哈
希表的建立与查找
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define m 10 //哈希表长度
#define LIST_INIT_SIZE 100
#define NULLKEY 0
typedef int KeyType; //整型
typedef struct{
KeyType key;
}Elemtype;
typedef struct{
Elemtype *elem;
int length;
}Sstable;
typedef struct BSTNode{
KeyType key;
struct BSTNode *lc,*rc;
}*BSTree;
typedef struct node{
KeyType key;
struct node *next;
}NODE;
NODE *HashTable1[m];
typedef struct{
KeyType key;
}RecordType;
typedef RecordType HashTable2[m];
int InitList_Ss(Sstable &st)
{//构造一个空的线性表 st
printf("创建一个空的线性表:");
st.elem=(Elemtype*)malloc(LIST_INIT_SIZE*sizeof(El
emtype));
if(!st.elem) return false;
st.length=0;
return true;
}
Sstable &Init_Ss(Sstable &st)
{//建立有序表
printf("建立有序表:");
int i=0;
int t;
do
{
printf("请输入一个小于 1000 的数:");
scanf("%d",&st.elem[i].key);
st.length++;
t=st.elem[i].key;
if(i>0)
{
for(int j=0;j<st.length-1;j++)
{
if(st.elem[i].key<st.elem[j].key)
{
for(int k=st.length-2;k>=j;k--)
{
st.elem[k+1].key=st.elem[k].key;
}
st.elem[j].key=t;
}
}
}
i++;
}while(t<1000);
st.length--;
return st;
}
void Show(Sstable &st)
{//遍历有序表
printf("遍历有序表:");
if(st.length==0)
printf("有序表为空");
for(int i=0;i<st.length;i++)
{
评论2