2103101016 张合 桃花岛-997

题目: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,结果;

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值