当前位置:文档之家› 《数据结构》实验1实验报告

《数据结构》实验1实验报告

南京工程学院实验报告
<班级>_<学号>_<实验X>.RAR文件形式交付指导老师。

一、实验目的
1. 掌握查找的不同方法,并能用高级语言实现查找算法;
2. 熟练掌握二叉排序树的构造和查找方法。

3. 了解静态查找表及哈希表查找方法。

二、实验内容
设计一个算法读入一串整数,然后构造二叉排序树,进行查找。

三、实验步骤
1. 从空的二叉树开始,每输入一个结点数据,就建立一个新结点插入到当前已生成的二叉排序树中。

2. 在二叉排序树中查找某一结点。

3.用其它查找算法进行排序。

四、程序主要语句及作用
程序1的主要代码
public class BinarySearchTreeNode //二叉查找树结点
{
public int key;
public BinarySearchTreeNode left;
public BinarySearchTreeNode right;
public BinarySearchTreeNode(int nodeValue)
{
key = nodeValue;
left = null;
right = null;
}
public void InsertNode(BinarySearchTreeNode node)//插入结点 {
if (node.key > this.key)
{
if (this.right == null)
{
this.right = node;
return;
}
else
this.right.InsertNode(node);
}
else
{
if (this.left == null)
{ this.left = node; return; }
else
this.left.InsertNode(node);
}
}
public bool SearchKey(int searchValue)
{
if (this.key == searchValue)
return true;
if (searchValue > this.key)
{
if (this.right == null)
return false;
else
return this.right.SearchKey(searchValue);
}
else
{
if (this.left == null)
return false;
else
return this.left.SearchKey(searchValue);
}
}
public void MiddleOrder()
{
if (this.left != null)
this.left.MiddleOrder();
Console.WriteLine(this.key);
if (this.right != null)
this.right.MiddleOrder();
}
public void PreOrder()
{
Console.WriteLine(this.key);
if (this.left != null)
this.left.PreOrder();
if (this.right != null)
this.right.PreOrder();
}
public void PostOrder()
{
if (this.left != null)
this.left.PostOrder();
if (this.right != null)
this.right.PostOrder();
Console.WriteLine(this.key);
}
} //二叉查找树结点
public class BinarySearchTree//二叉查找树
{
private BinarySearchTreeNode root;
public BinarySearchTree()
{ root = null; }
public BinarySearchTree(int nodeValue)
{ root = new BinarySearchTreeNode(nodeValue); }
public void InsertBinarySearchTreeNode(int nodeValue) {
BinarySearchTreeNode insertNode = new
BinarySearchTreeNode(nodeValue);
if (root == null)
{ root = insertNode; return; }
else
{ root.InsertNode(insertNode); return; }
}
public bool SearchKey(int searchValue)
{
if (root.key == searchValue) return true;
else
return root.SearchKey(searchValue);
}
public void MidOrder()
{ root.MiddleOrder(); return; }
public void PreOrder()
{ root.PreOrder(); return; }
public void PostOrder()
{ root.PostOrder(); return; }
public static void BinarySearchTreeSort(int[] a)
{
BinarySearchTree t = new BinarySearchTree();
for (int i = 0; i < a.Length; i++)
t.InsertBinarySearchTreeNode(a[i]);
t.MidOrder(); return;
}
public static bool BinarySearchTreeSearch(int[] a, int searchKey) {
BinarySearchTree t = new BinarySearchTree();
for (int i = 0; i < a.Length; i++)
t.InsertBinarySearchTreeNode(a[i]);
return t.SearchKey(searchKey);
}
}//二叉查找树
class Program
{
static void Main(string[] args)
{
BinarySearchTree b = new BinarySearchTree();
b.InsertBinarySearchTreeNode(7);
b.InsertBinarySearchTreeNode(5);
b.InsertBinarySearchTreeNode(13);
b.InsertBinarySearchTreeNode(6);
b.InsertBinarySearchTreeNode(26);
b.InsertBinarySearchTreeNode(18);
Console.WriteLine("排序后:");
b.MidOrder();
// Console.ReadKey();
Console.Write("请输入要查找的数据:");
int searchData = Convert.ToInt32(Console.ReadLine());
if (b.SearchKey(searchData))
Console.WriteLine("找到{0}结点!", searchData);
else
Console.WriteLine("未找到{0}结点!", searchData);
Console.ReadKey();
}
}
}
五、程序运行结果截图
程序1
六、收获,体会及问题(写得越详细、越个性化、越真实越好,否则我不知道你做这个实验的心路历程,也就无法充分地判断你是否是独立完成的这个实验、你是否在做这个实验时进行了认真仔细地思考、通过这个实验你是否在实践能力上得到了提高)。

相关主题