二叉排序树节点的插入和删除实验设计报告(用C语言实现)

时间:2019-05-14 12:15:26下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《二叉排序树节点的插入和删除实验设计报告(用C语言实现)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《二叉排序树节点的插入和删除实验设计报告(用C语言实现)》。

第一篇:二叉排序树节点的插入和删除实验设计报告(用C语言实现)

二叉排序树节点的插入和删除实验设计报告

1程序功能描述:

用二叉树的所学知识建立二叉排序树,对已建立的排序二叉树进行遍历(先序,中序,后序),插入,查找,删除。

2主要数据结构描述:

二叉排序树若不为空树,那么相比于其他的树,它具有一下特性: 1.、左儿子永远小于双亲结点;

2、右儿子永远大于双亲结点。其中结点由一个存放信息的空间和两个指针构成。

3程序结构描述:

以C语言为工具,在主函数外部定义二叉排序树的遍历(先序,中序,后序),插入,删除函数,在主函数中调用,其中主函数中用switch…case…结构,有选择性的进行功能的实现。

4算法描述:

二叉排序树插入结点的算法:

1若建立的二叉排序树中已有与欲插入的数相同的结点则无须插入;

2以while(p)控制循环变量,若欲插入的数比根结点小的话,执行 P=P->lchild;若大于p->data;则执行 P=P->rchild;,直至p为空。此过程中一直用指针F记录前一步p的位置。

3在第2歩确定了的位置的基础上进行插入,若与插入的数小于F->data,则执行F->lchild=S;若大于F->data,则执行 F->rchild=S;二叉排序树的建立:

通过对插入函数的调用即 T=InsertBST(T,k);以while(k!=-1)控制循环,递归的进行插入直至生成二叉排序树。

二叉排序树的遍历算法:

1、先序遍历:先输出根结点的信息;然后调用函数PreOrderTraverse(T->lchild),递归的输出左子树的信息;最后调用函数PreOrderTraverse(T->rchild),递归输出有子树的信息。

2、中序遍历:先调用函数PreOrderTraverse(T->lchild),递归的输出左子树的信息;然后输出根结点的信息;最后调用函数PreOrderTraverse(T->rchild),递归输出有子树的信息。

3、后序遍历:先调用函数PreOrderTraverse(T->lchild),递归的输出左子树的信息;然后调用函数PreOrderTraverse(T->rchild),递归输出有子树的信息,最后输出根结点的信息。

二叉排序树的删除算法:

通过*f,*p,*q,*c;四个指针,先对二叉排序树查找,用f,q指针跟谁p指针,通过q->data=p->data,掩盖与删除的信息;再借助指针c,通过语句 f->lchild=c和free(p)或f->rchild=c和free(p),删除结点p,此时结点的删除得以实现。

5程序测试方案与测试结果描述:

功能1:二叉树的遍历

输入节点信息:3 6 8 4 1-1; 先序遍历31648 中序遍历13468 后序遍历14863 截图如下:

功能2:向原有的二叉树中插入一个结点 插入2 插入后遍历如下: 先序遍历:312648 中序遍历:123468 后序遍历:214863 截图如下:

功能3:删除一个结点: 删除4 删除后遍历结果如下: 先序遍历:31268 中序遍历:12368 后序遍历:21863 截图如下:

功能0: 输入0 显示:退出。截图如下:

第二篇:用c语言实现单纯形法的编程

用c语言实现单纯形法的编程

#include “stdio.h” #include “math.h” #include int M,N;float c[100],a[100][100],b[100],CZ[100],Dn[100],th[100],x[100];int Fn[100];int K,L,ths;float zy;int shuru();void findmm();void chang();main(){ float max_Z,sum=0,s=0;int i,j,r=0;if(!shuru()){ printf(“ERROR!!n”);return 0;} while(r0){findmm();if(ths==M){goto loop;} else chang();} else r++;} } loop: if(ths==M){printf(“n此线性规划没有有限最优解!!n”);printf(“n此线性规划最终迭代结果为:”);printf(“n Cj ”);for(j=0;jDn[K])max=i;K=max;for(i=0;i0)&&(th[i]Dn[K])K=i;for(i=0;i

第三篇:A5算法C语言实现报告(写写帮推荐)

程序:

#include #define N 64

lfsr(int a,int b,int c,int d,int T[]);void main(){ int A[19]={1,0,1,1,0,0,1,1,0,0,0,0,1,0,1,0,1,0,1};

int B[22]={0,0,1,0,0,0,1,1,1,0,0,1,0,0,1,0,1,0,1,0,1,1};int C[23]={1,0,0,0,1,0,1,1,0,1,0,0,1,0,0,0,1,0,1,0,1,0,1};for(int i=0;i

{

printf(“%d”,A[18]^B[21]^C[22]);

lfsr(13,16,17,18,A);

lfsr(12,16,20,21,B);

lfsr(17,18,21,22,C);} else if(j==1)

{

printf(“%d”,A[18]^B[21]^C[22]);

if(A[9]==0)

lfsr(13,16,17,18,A);

if(B[11]==0)

lfsr(12,16,20,21,B);

if(C[11]==0)

lfsr(17,18,21,22,C);} else if(j==2)

{

printf(“%d”,A[18]^B[21]^C[22]);

if(A[9]==1)

lfsr(13,16,17,18,A);

if(B[11]==1)

lfsr(12,16,20,21,B);

if(C[11]==1)

lfsr(17,18,21,22,C);} else if(j==3)

{

printf(“%d”,A[18]^B[21]^C[22]);

lfsr(13,16,17,18,A);

lfsr(12,16,20,21,B);

lfsr(17,18,21,22,C);

} } printf(“n n”);} lfsr(int a,int b,int c,int d,int T[]){

int i;

for(i=d;i>0;i--)

{

T[i]=T[i-1];

}

T[0]=T[a]^T[b]^T[c]^T[d];

return(T[0]);} 密钥流:

A[19]={1,0,1,1,0,0,1,1,0,0,0,0,1,0,1,0,1,0,1};

B[22]={0,0,1,0,0,0,1,1,1,0,0,1,0,0,1,0,1,0,1,0,1,1};C[23]={1,0,0,0,1,0,1,1,0,1,0,0,1,0,0,0,1,0,1,0,1,0,1};密钥流序列:

1111 1111 1101 1010 1101 0101 0111 0001 1110 0000 1010 1000 0101 1100 0100 0000

第四篇:求解Josephus问题实验总结(用C语言循环单链表实现)

求解Josephus问题实验总结

1实验题目: josephus问题可描述如下:

设有n个人围成一个环,现从第s个人开始报数,数到第m的人出列,然后从出列的下一个人从新开始报数,数到第m的人又出列,如此重复,直至所有人均出列为止。求这些人出列的顺序。

2实验目的:

熟练掌握线性表的顺序实现和链式实现的基本操作。

3实验方法:

通过运用已学的向量和循环单链表编写程序,并在电脑上运行,实现josephus问题的求解。4实验过程与结果:

(1)输入n值为6,s值为3,m值为2,输入A[i]的值为1 2 3 4 5 6 输出结 果为:4 6 2 5 3 1 截图如下:

(2)

1、输入n值为-1, s值为3,m值为2,显示:ERROR。截图如下:

2、输入n值为6, s值为0,m值为3,显示:ERROR。截图如下:

3、输入n值为6, s值为3,m值为0,显示:ERROR。截图如下

5试验体会与收获:

(1)写程序是要随时注意缩进,使得程序层次清晰,便于寻找错误,同时也让别人看的更加方便。(2)构造循环单链表,要以单链表为单元指针指向把最后个单元与第一个即可(3)建立好循环单链表后,通过三个指针(p,q,tmp)的指示,来确定报数,出列人的位置,得以完成。具体过程如下:p指向head头指针,通过s次循环将p指向报数的起始位置s,用q记录p的位置,再经过m次循环另p指向出列者的位置,将其数值保存在一维数组中,并将其从链表中删除,p指向下一次起始位置,结束时返回数组A[j]。(4)删除节点时,注意要释放节点。

(5)构造函数时,一定要明确函数的类型,即返回行还是不返回型,以免出现不必要的错误。

第五篇:JavaWeb用MV模式C实现简单的图书管理系统报告资料

《软件开发基础(Java)》

综合性实验报告

目:

MVC实验 图书管理系统 班

级:

学生学号:

学生姓名:

指导老师:

提交时间:

2016年1月14日

数学与信息学院

一、实验目的

掌握基于MVC的三层架构。

二、实验题目

通过数据源和DAO对象访问数据库。其中JavaBeans实现模型,访问数据库,Servlet实现控制器,JSP页面实现视图。

模型包括2个JavaBean:BookBean用于存放图书信息,BookDAO用于访问数据库。 控制器包括2个Servlet:BookQueryServlet根据请求参数查询图书信息、BookInsertServlet用来向数据库中插入数据。 视图包括4个JSP页面:bookQuery.jsp显示查询页面、bookInsert.jsp显示插入页面、display.jsp显示查询结果页面和errorPage.jsp显示错误页面。

三、具体实现

1.设计数据库

CREATE TABLE books(bookid varchar(20)PRIMARY KEY, title varchar(50)author varchar(30), publisher varchar(40), price Float);

2.程序流程 查询图书信息

插入图书信息

3.代码实现

(1)存放图书信息的JavaBeans代码BookBean.java package com.beans;import java.io.*;

public class BookBean implements Serializable{

private String bookid = null;//图书编号

private String title = null;// 图书书名

private String author = null;// 图书作者

private String publisher = null;// 图书出版社

private float price = 0.0F;// 图书价格

public BookBean(){}

public BookBean(String bookId, String author,String title, String publisher, float price){

this.bookid = bookId;

this.title = title;

this.author = author;

this.publisher = publisher;this.price = price;

}

public String getBookid(){ return this.bookid;}

public String getTitle(){ return title;}

public String getAuthor(){ return this.author;}

public float getPrice(){ return price;}

public String getPublisher(){ return publisher;}

public void setBookid(String bookid){ this.bookid=bookid;}

public void setTitle(String title){this.title=title;}

public void setAuthor(String author){ this.author = author;}

public void setPrice(float price){this.price=price;}

public void setPublisher(String publisher){ this.publisher = publisher;} }

(2)BookDAO是一个简单的JavaBeans,它实现数据库的访问 package com.beans;import java.sql.*;

import javax.sql.*;import javax.naming.*;import java.util.ArrayList;

public class BookDAO{

private static Context context= null;

private DataSource dataSource = null;

public BookDAO(){

try{

if(context == null){

context = new InitialContext();

context =(Context)context.lookup(“java:comp/env”);

// 连接的是在context.xml下面配置的数据库连接池

dataSource =(DataSource)context.lookup(“databasePool”);

}

}catch(NamingException e2){

}

}

// 根据书号查询图书信息

public BookBean searchBook(String bookid){

Connection conn = null;

PreparedStatement pstmt = null;

ResultSet rst = null;

BookBean book = new BookBean();

try{

conn = dataSource.getConnection();

pstmt = conn.prepareStatement(“SELECT * FROM books WHERE bookid=?”);

pstmt.setString(1,bookid);

rst = pstmt.executeQuery();

if(rst.next()){

book.setBookid(rst.getString(“bookid”));

book.setTitle(rst.getString(“title”));

book.setAuthor(rst.getString(“author”));

book.setPublisher(rst.getString(“publisher”));

book.setPrice(rst.getFloat(“price”));

return book;

}else{

return null;

}

}catch(SQLException se){

return null;

}finally{

try{

conn.close();

}catch(SQLException se){

}

}

}

// 插入一本图书记录

public boolean insertBook(BookBean book){

Connection conn = null;

PreparedStatement pstmt = null;

try{

conn = dataSource.getConnection();

pstmt = conn.prepareStatement(“INSERT INTO books VALUES(?,?,?,?,?)”);

pstmt.setString(1,book.getBookid());

pstmt.setString(2,book.getTitle());

pstmt.setString(3,book.getAuthor());

pstmt.setString(4,book.getPublisher());

pstmt.setFloat(5,book.getPrice());

pstmt.executeUpdate();

pstmt.close();

return true;

}catch(SQLException se){

return false;

}finally{

try{

conn.close();

}catch(SQLException se){ }

}

}

}

(3)JSP页面bookQuery.jsp实现根据书号查询图书信息 <%@ page contentType=“text/html;charset=UTF-8” %> Book Query 请输入一个书号:


下载二叉排序树节点的插入和删除实验设计报告(用C语言实现)word格式文档
下载二叉排序树节点的插入和删除实验设计报告(用C语言实现).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐