题目:1;线性表
2,代码;
#pragma once
#include <iostream>
using namespace std;
const int MaxSize = 100;
class CHashTable
{
private:
int ht[MaxSize];
int H(int k);
int m;
public:
CHashTable(int m);
~CHashTable()
{
}
int Insert(int k);
int Delete(int k);
int Search(int k);
};
CHashTable::CHashTable(int max):m(max)
{
for (int i = 0; i < MaxSize; i++)
{
ht[i] = NULL;
}
}
inline int CHashTable::H(int k)
{
if (k == m)
return (k % m) + 1;
else return k % m;
}
inline int CHashTable::Insert(int k)
{
int key = H(k);
for (int i = key; i <= MaxSize; i = (i + 1) % m)
{
if (ht[key] == 0)
{
if (key <= MaxSize)
{
ht[key] = k;
return 1;
}
}
else key = (key + 1) % m;
}
return -1;
}
inline int CHashTable::Delete(int k)
{
if (Search(k) == -1)
{
return -1;
}
else
{
int i = H(k);
while (ht[i] != k)
{
if (ht[i] == k)
{
ht[i] = 0;
return 1;
}
else i = (i + 1) % m;
}
}
}
inline int CHashTable::Search(int k)
{
int i = H(k);
while (ht[i] != 0)
{
if (ht[i] == k) return i;
else i = (i + 1) % m;
}
return -1;
}
#include "HashSearch.h"
int main()
{
int a[5] = { 11,17,28,97,44 };
CHashTable H1(5);
for (int i = 0; i < 5; i++)
{
H1.Insert(a[i]);
}
if (H1.Search(a[3]))
{
cout << a[3] << "位于" << H1.Search(a[3]) << "处" << endl;
}
else cout << "查找失败,此数据不存在" << endl;
if (H1.Search(a[2]))
{
cout << a[2] << "位于" << H1.Search(a[2]) << "处" << endl;
}
else cout << "查找失败,此数据不存在" << endl;
if (H1.Delete(a[4]) != -1)
{
cout << a[4] << "删除成功" << endl;
}
else cout << "删除失败,该数据不存在" << endl;
}
题目:1,二叉树
2,代码;
#include<stdio.h>
#include<stdlib.h>
typedef struct Tree{
int data;
struct Tree *lchild;
struct Tree *rchild;
}Tree,*BitTree;
BitTree CreateLink()
{
int data;
int temp;
BitTree T;
scanf("%d",&data);
temp=getchar();
if(data == -1){
return NULL;
}else{
T = (BitTree)malloc(sizeof(Tree));
T->data = data;
printf("请输入%d的左子树: ",data);
T->lchild = CreateLink();
printf("请输入%d的右子树: ",data);
T->rchild = CreateLink();
return T;
}
}
void ShowXianXu(BitTree T)
{
if(T==NULL)
{
return;
}
printf("%d ",T->data);
ShowXianXu(T->lchild);
ShowXianXu(T->rchild);
void ShowZhongXu(BitTree T)
{
if(T==NULL)
{
return;
}
ShowZhongXu(T->lchild);
printf("%d ",T->data);
ShowZhongXu(T->rchild);
}
void ShowHouXu(BitTree T)
{
if(T==NULL)
{
return;
}
ShowHouXu(T->lchild);
ShowHouXu(T->rchild);
printf("%d ",T->data);
}
int main()
{
BitTree S;
printf("请输入第一个节点的数据:\n");
S = CreateLink();
printf("先序遍历结果: \n");
ShowXianXu(S);
printf("\n中序遍历结果: \n");
ShowZhongXu(S);
printf("\n后序遍历结果: \n");
ShowHouXu(S);
return 0;
}
3,结果;