第一篇:二叉排序树节点的插入和删除实验设计报告(用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 程序: #include 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问题实验总结 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)构造函数时,一定要明确函数的类型,即返回行还是不返回型,以免出现不必要的错误。 《软件开发基础(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” %> 文档为doc格式Dn[K])K=i;for(i=0;i 第三篇:A5算法C语言实现报告(写写帮推荐)
第四篇:求解Josephus问题实验总结(用C语言循环单链表实现)
第五篇:JavaWeb用MV模式C实现简单的图书管理系统报告资料
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。