自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(135)
  • 资源 (15)
  • 收藏
  • 关注

原创 SpringBoot yml配置文件为变量赋值

1. 创建person类和Car类,并在person类上加注释@ConfigurationProperties(prefix = "person"),表明这个类的成员变量的值从配置类注入。注意这里的person类的成员变量需要有get/set方法。import org.springframework.boot.context.properties.ConfigurationProp...

2019-07-14 19:58:47 7666

原创 java 面试消息题1-13

当Slave切换成Mater以后,锁就不存在了,其他的Redission可以加到锁了,这时候就出现了多个线程同时进入锁的问题呢。简单的说,当需要判断一个值(“abc”)是否存在时候,把这个值进行取hash值,用三个不同的函数可以算出三个不同的数值,再把这三个值对应的二进制数字位数上的值标记为1.只有判断处这三个位置的值都为1的时候这个值才有可能存在。假如你设置了一个固定的超时时间, 但是程序的运行时间就是比你设置的时间长,到时间之后就需要把锁释放了,这时候其他的程序就行进到这段加锁的代码里面来。

2023-04-11 20:05:14 664

原创 java 面试题(java 基础) 1-26

java 面试题库 round 1

2023-03-29 08:52:18 115

原创 Mongo 简单查询

插入用来测试的数据db.inventory.insertMany([{ item: "journal", qty: 25, status: "A", size: { h: 14, w: 21, uom: "cm" }, tags:[ "blank", "red" ] },{ item: "notebook", qty: 50, status: "A", size: { h: 8.5, w: 11, uom: "in" }, tags: [ "red", "blank" ] },{ item: "

2022-03-03 20:48:02 735

原创 MongoDB创建用户设置密码和基本命令的使用

第一步 连接本机# mongo ‐‐host <HOSTNAME> ‐‐port <PORT>mongo #我的是默认本机,所以不用跟参数第二步 设置密码> use adminswitched to db admin> db.createUser({... user: "allen",... pwd: "111111",... roles: [ "root" ]... })Successfully added user: { "user..

2021-06-23 22:08:49 450

原创 MongoDB的安装使用

以JSON为数据模型的文档数据库,一个文档就是一个JSON对象属于应用型数据库,类似Mysql,存储海量数据,但是相对Mysql,Mongo访问su更快。

2021-06-23 21:16:04 132 1

原创 Kafka的ReBalance机制和高水位机制

分区与消费者的分配平衡机制。partition.assignment.strategyrange -round-robinsticky

2021-06-20 20:48:09 544 2

原创 Kafka整合SpringBoot

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-06-20 18:28:01 145

原创 kafka的Leader选举机制

Kafka设计原理详解Kafka核心总控制器Controllerkafka的所有Broker都会注册到kafka集群中去。kafka集群会选举一个Broker作为Leader作为kafka七群的总控制器Controller。他负责管理整个集群所有分区Partition和副本follower的状态。当某个分区的leader副本出现故障时,由控制器负责为该分区选举新的leader副本。当检测到某个分区的ISR集合发生变化时,由控制器负责通知所有broker更新其元数据信息。当使用kafka-top

2021-06-20 18:01:27 4689 1

原创 kafka的java原生使用实例

第一步,导包 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.4.1</version> </dependency> <dependency> <groupId>com.alibaba&lt

2021-06-07 22:28:13 655 1

原创 Kafka的集群搭建分区介绍

对于kafka来说,一个单独的broker意味着kafka集群中只有一个节点。要想增加kafka集群中的节点数量,只需要多启动 几个broker实例即可。为了有更好的理解,现在我们在一台机器上同时启动三个broker实例。1. 将kafka的配置文件准备三份[allen@localhost config]$ pwd/home/allen/packages/kafka_2.13-2.8.0/config[allen@localhost config]$ cp server.properties

2021-06-06 22:26:14 330 2

原创 Kafka入门,下载,安装,配置,基本使用

Kafka基本概念kafka是一个分布式的,分区的消息(官方称之为commit log)服务。它提供一个消息系统应该具备的功能,但是确有着独 特的设计。可以这样来说,Kafka借鉴了JMS规范的思想,但是确并没有完全遵循JMS规范。Kafka中一些基本概念。安装并配置kafka安装和配置的步骤,可以参考下面的官网http://kafka.apache.org/quickstart下载,解压wget https://mirrors.bfsu.edu.cn/apache/k...

2021-06-03 22:07:24 166

原创 Rabbit MQ 通配符(Topic)的java实例

1. 创建通配符模式下的交换机通配符的规则:1. # :代表没有或一个或多个单词(单词与单词之间用“.”分割);   2. * :代表一个零个或一个单词;例如:   aa.#.bb.* :       匹配的: aa.HH.CC.bb 、 aa.bb 、aa.bb.cc       不匹配: aa.cc 、 aa.bb.cc.dd2. 消费者1 public class BiaDu { public static void main(String[].

2021-05-11 22:35:13 228 2

原创 Rabbit MQ 定向(Direct)的java实例

1. 参照上一个例子, 创建一个type是direct的交换机2. 创建消费者1, 并在消费者中绑定交换机与queue的关系。public class BiaDu { public static void main(String[] args) throws IOException { Connection connection = RabbitUtils.getConnection(); final Channel channel = connec.

2021-05-11 21:36:31 211 1

原创 Rabbit MQ 广播(fanout)的java实例

RabbitMQ 基础架构如下:前一篇文章,有关于1和2的例子下面介绍3 Publish/SubScribe的例子3与2 的区别是:2 中的么个consumer 收到的msg是互斥的,加起来是一个总和。3中的每个consumer收到的msg是一样的,自己就是一个总和,msg被复制了多份。在介绍3的例子之前,需要了解下交换机:lExchange:交换机(X)。一方面,接收生产者发送的消息。另一方面,知道如何处理消息,例如递交给某个特别队列、递交给所有队列、或是将消息丢弃。.

2021-05-11 21:10:35 1091 2

原创 Rabbit MQ 的使用实例

1. 创建一个User , Allen2. 创建一个Virtual Host3. 为User设置访问Virtual hosts权限4. 使用Allen 这个user创建一个Queue 名字为Allen_Msg_Queue。注意需要退出当前登录然后用Allen这个用户登录进去创建5. 使用procedcer 往这个queue上面发送msgpublic class Producer { public static void main(.

2021-05-08 11:33:43 1435 1

原创 Rabbit MQ安装与使用

Rabbit MQ 的安装第一步 准备好安装包第二步 安装安装顺序分别安装erlang,socat,rabbitmq,如下[root@localhost packages]# rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm Preparing... ################################# [100%]Updating / installing... 1:er

2021-05-05 22:03:38 576 1

原创 Message Queue(消息队列)的基本概念和使用场景

消息队列的概念Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。消息队列本质如下图, 其本质就是用这种中间件的方式来代替远程调用的方式。为什么要使用消息队列?一. 解耦接触系统于系统间的强依赖关系。二. 异步提速使用消息队列在不同系统直接通信,比以前的直接调用的方式更快。三. 消峰填谷使用消息队列后会遇到什么问题?一 引入了外部依赖,一档MQ宕机,会对业务造成严重影响二 增加复杂性,要

2021-05-05 20:17:24 732

原创 Zookeeper 的应用场景

Zookeeper 的应用场景:Zookeeper场景一 - 分布式锁非公平锁实现原理,都去执行创建 create -e /exclusive/lock这个节点,是执行成功就谁拿到锁。这个实现方式在并发问题比较严重的情况下,性能会下降的比较厉害,主要原因是,所有的连接 都在对同一个节点进行监听,当服务器检测到删除事件时,要通知所有的连接,所有的连接同时 收到事件,再次并发竞争,这就是羊群效应。公平锁的实现原理,借助于临时顺序节点,可以避免同时多个节点的并发竞争锁,缓解了服务端压力。1

2021-04-27 22:18:55 162

原创 ZK 的 Curator java客户端使用实例

Curator是一套开源的java操作zookeeper客户端框架,由netflix公司推出的。Curator是目前使用最多,对zookeeper版本支持最好的第三方客户端。Curator对很多zookpeeper的服务功能进行了封装,例如如下场景:Leader选举分布式计数器分布式锁会话重新链接Watch反复注册多种异常处理场景下面接受Curator的java 客户端使用实例:Curator 建立与zk的连接, 这里提供了2种风格的写法: public st

2021-04-12 23:16:29 270

原创 Zookeeper Java客户端实例以及设置循环监听

Zookeeper Java 客户端实例Zookeeper 的client端和服务端的代码没有分离,所以只用引用一个jar就行。这里版本最好与你服务端安装的zookeeper版本一致,以防一些兼容性问题。<dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.5.8</versio

2021-04-09 22:15:50 311

原创 搭建Zookeeper集群详细步骤

如何使用zookeeper, 如下图, 可以将配置信息放在/order/config里面, 当有人取更新里面的数据的时候,其他的节点都会收到更新的信息。ZK的客户端工具:[allen@localhost ~]$ cd packages/[allen@localhost packages]$ cd apache-zookeeper-3.5.8-bin/[allen@localhost apache-zookeeper-3.5.8-bin]$ lsbin conf docs lib

2021-04-08 20:42:05 174

原创 zookeeper事件监听机制

通过get -w 可以在某个节点上添加一个监听事件,当节点下面有任何变动,会通知到客户端。这样客户端就可以实时的感受到服务端的数据的实时变化。添加事件,对数进行监听,被监听的节点数据发送变化时会收到通知,就是你重新设置的值和一以前的值一样,也会通知的,因为数据没变,但是目录的元数据也发变化了:对目录进行监听 ,当目录里面的结构发送变化是,客户端会收到通知,注意所有的通知都是一次性的,通知了一次后对应的事件就被移除了。添加树的节点监听 ls -R /test1对/test1 下面的所有

2021-04-05 20:23:43 376

原创 Zookeeper 创建6种的节点实例

Zookeeper是Apache Hadoop的一个子项目,它主要用来解决分布式系统中经常遇到的一些数据管理问题,例如,统一命名,状态同步,集群管理,分布式应用配置管理。Zookeeper的定位,这个动物园的管理者,如下图Zookeeper又2个特性特性一树形结构,每个子目录可以被增加删除特性二 事件监听机制特性一zookeeper可以对目录树中的任意一个节点进行监听。监听是只监听目录下面的目录变化。zookeeper类似一个文件系统,每个子目录被称为目录节点,允许我们自..

2021-04-05 19:15:57 6228

原创 Redis编程的规范与部分优化建议

为了使reids配置更优,在使用redis的时候需要注意一些规范,首先要注意,redis和任何cache都不适合写操作比较多的场景,只时候读多写少的场景。1. 定义key的时候,加上前缀,防止不同业务的key冲突trade:order:cloth:Tshirt:10011不要再key里面加特殊字符,尽量的让key简洁,不要让key占太多空间user:{uid}:friends:messages:{mid} ==> u:{uid}:fri:msg:{mid}不要大量使用的bigkey

2021-04-05 12:03:48 110

原创 企业级架构下Redis存在的一些问题和解决方案

在企业级的互联网项目中,通常使用的是多级的缓存架构,如下的一个架构例子:如上的这个架构存在这一些需要注意的问题, 这些问题也是通常使用缓存架构时都会遇到的问题,下面介绍了一些常见问题和解决方案:缓存穿透缓存存在的目的是为了保护后端, 让大量的访问请求都直接从缓存层返回数据,不用打到存储层的数据库里面去。缓存穿透就是大量的访问没有被缓存层有效的拦截,都直接访问到数据层去了。通常导致缓存穿透的原因有:有人恶意的攻击,使用些不存在的产品代号,进行大量的访问,造成大量空命中。 自身业务逻辑

2021-04-05 10:59:35 276 1

原创 Redis实现分布式锁Redisson

自己来写一套redis 分布式锁的的逻辑,如下需要考虑的的问题很多, 很难把每个细节都考虑到。1. 必须把delete key放到finally里面,因为中间出现exception,这个锁就被永远卡住了2. 必须给一个锁的最大占用时间,万一没有执行到delete key程序挂了,这个锁就被永远卡住了3. 给每个锁一个id,当一段代码执行时间比较长,超过了最大占用时间,锁被释放了。后面一个程序进来到所里面,这时候第一个程序执行完成,走到delete lock。4. 锁续命,用一个守护线程一直来检查当

2021-04-02 18:16:42 139

原创 Redis底层设计原理

Redis是C语言实现的Redis的Key和Value都是Sting,C语言中 char data[]="Allen"Redis在C语言中自定义了一个数据结构来存储String,SDSSDS = Simple dynamic string 简单动态字符串特点:1. 二进制安全的数据结构2. 提供了热潮预分配机制,避免了频繁的内存分配3. 兼容C语言的函数库...

2021-03-16 22:46:06 248 1

原创 使用Jmeter模拟1秒发送100个请求

在分布式系统中,使用syncnized是没有用的,无法达到锁的效果,如下例子:1. 安装并配置后一个nginx服务器,nginx的配置文件如下,下面配置的server是我IDEA启动的服务对应的机器的ip,我通过修改yml的端口号,在IDEA中启动了2个服务8080和8081。这里用到了nginx的负载均衡功能。http { include mime.types; default_type application/octet-stream; sendfile

2021-03-16 22:45:19 4883

原创 Redis集群扩容与下线步骤

当双手十一来临时,需要临时增加Redis集群的数量来缓解压力在集群中增加Redis节点步骤如下:1. 使用链接集群,并通过cluster nodes来查看当前集群的信息[allen@localhost ~]$ cd packages/redis-5.0.3/[allen@localhost redis-5.0.3]$ src/redis-cli -h 192.168.0.103 -p 8003 -a allenWarning: Using a password with '-a' or '

2021-01-25 22:42:17 732

原创 Redis 集群的原理分析

Redis 集群的原理分析Redis将所有数据划分问16384个槽位slots,每个节点负责一部分槽位,槽位的信息存在于每个节点中。当Redis Cluster的客户端来链接集群时,会得到一份集群的槽位信息,这样当客户端需要查找存储每个值时,就直接去链接对应的节点就行了,同时如果槽位信息改变了,存在客户端与服务器不一致情况,需要纠正机制来实现校验和调整。槽位定位算法key的hashcode%16835跳转重定位当客户端向一个,错误的节点发出了指令,节点发现所访问的槽位不归自己所有时,

2021-01-24 21:50:08 153

原创 Redis Java客户端-通过原生jedis和SpringBoot操作Redis集群

Redis java客户端操作集群1. 使用Jedis java原生操作redis集群public class RedisCluster { public static void main(String[] args) { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxTotal(20); jedisPoolConfig.setMa

2021-01-21 20:37:24 296 1

原创 Redis删除并重新创建一个集群

发现自己搭建的集群有问题, 如何删除现有集群并重写搭建:1. 登录每台机器查看启动的redis服务,然后停掉所以的redis服务ps -ef| grep rediskill 12455 124602. 登录每台机器,删除上个集群的相关文件[allen@localhost redis-5.0.3]$ cd 8001[allen@localhost 8001]$ ls8001.log appendonly.aof dump.rdb nodes-8001.conf[allen@l

2021-01-20 20:52:23 2899 8

原创 Linux 网络配置

1. 创建虚拟机的时候,注意选择桥接2. 用自己的常用账号登陆linux机器。然后按照下面的步骤配置网络。3. 基本上前面2步完成后重启机器就可以了。如果有问题继续下面的配置[root@localhost network-scripts]# pwd/etc/sysconfig/network-scripts[root@localhost network-scripts]# vi ifcfg-ens33TYPE=EthernetBOOTPROTO=t=static.

2021-01-20 20:44:10 110

原创 Redis 集群架构的搭建基于5.03

哨兵架构存在的一些缺陷:1. 瞬断问题,哨兵架构中,当主节点挂断后需要选举,然后切换,中间有几秒到几十秒的服务暂停时间2. 高并发受限问题,哨兵对外只有一个节点提供写服务,一台就几w的QPS。3. 单个节点的内存不能设置过大,也就10G左右,否者导致持久化文件过大,影响数据恢复和主从同步效率。Redis集群架构可以解决上面提到的问题,redis集群是有多个主从节点小群组成的分布式服务器集群特点: 复制,高可用,分片特性,没有中心节点,可水平扩容。官网称可以支持上万个节点(推荐不超过1

2021-01-19 22:12:21 1010 4

原创 linux不同机器间共享目录,目录绑定-基于NFS

我现在有2台机器,192.168.0.101和192.168.0.102192.168.0.101作为服务端,192.168.0.102作为客户端,/home/allen/packages/share为共享目录。然后共享目录建立好了后, 我会在客户端的共享目录中创建一个文件,然在服务端去查看是否有该文件的存在一 在客户端和服务端分别安装ntfs和rpcbind1. 安装ntfs-utilsyum -y install ntfs-utils2.安装rpcbindyum ins.

2021-01-17 22:26:27 354

原创 Redis哨兵架构的搭建测试实例

主从架构,如果主节点挂了,需要运维人员手动处理,重写配置主节点。哨兵架构可以可以解决这个问题, 当主节点挂了之后,哨兵会自动的选举一个节点当作主节点。sentinel哨兵是图书的redis服务,不提供读写服务,主要用过来监控redis实例节点。哨兵架构下client端第一次从哨兵找出redis主节点,后续就支持访问redis的主节点,不会每次都通过sentinel代理访问reids主节点,当redis主节点发送变化,哨兵会第一时间感知到,并且将新的redis主节点通知给client端,redis

2021-01-13 22:14:29 417 1

原创 Redis的批处理命令-管道和Lua脚本

redis 管道,一次性的把多条命令发送到服务器端,节省网络开销管道没有考虑事务和一致性的问题,如果pipeline有10条命令,其中地2-4条没有成功,其他的命令也会提交,只是把结果返回回来。public class RedisPipeLine { public static void main(String[] args) { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPo

2021-01-11 21:59:35 625

原创 Redis在java中的第一个Helloworld

第一步 - 加入Maven dependency: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.1.0</version> </dependency>第二步 - 在java中的使用:JedisPoolCon.

2021-01-11 08:46:05 141

原创 Redis的主从架构搭建

一个主节点,一到多个从节点,主节点执行写操作,从节点进行数据备份。也可以让从节点提供写读操作,减轻主节点的压力。Redis主从架构搭建1. 从src/redis.conf重新复制一份配置文件cp redis.conf redis.conf_12. 修改新建的文件redis.conf_1,配置如下信息port 6380 #修改端口号,代表本机另外一台机器pidfile /var/run/redis_6380.pid

2021-01-07 20:48:03 153

山东大学试卷计算机组成原理

山东大学 计算机组成原理试卷 山东大学 计算机组成原理试卷山东大学 计算机组成原理试卷 山东大学 计算机组成原理试卷

2010-03-14

新视野大学英语第一册答案

面\新视野大学英语第一册答案面\新视野大学英语第一册答案面\新视野大学英语第一册答案面\新视野大学英语第一册答案

2010-03-13

新视野大学英语第3册答案

新视野大学英语第3册答案新视野大学英语第3册答案新视野大学英语第3册答案新视野大学英语第3册答案

2010-03-13

新视野 大学英语第二册答案

新视野大学英语第二册答案新视野大学英语第二册答案新视野大学英语第二册答案新视野大学英语第二册答案

2010-03-13

华中理工大学99年计算机组成原理试题

华中理工大学99年计算机组成原理试题 有点久的试题了,可以看看计算机组成原理考试是怎么考的

2010-03-13

银行家算法 操作系统 c语言的

操作系统 银行家算法 的 程序和报告 很好的,赶紧下载哦

2010-03-13

日历 只要输入任何一年的年份就可以打印该年的分的日历

只要输入任何一年的年份就可以打印该年的分的日历 用简单的数组实现本程序

2009-02-14

航空客运订票系统 c语言 数据结构作业

1. 查询航线:根据旅客提出的终点名 输出下列信息:终点站名,航班号,飞机号,星期几,6. 乘员定额,余票量,已订票的客户名9.单(包括姓名,订票量,航船舱等级1 2或3)以及等候替补的客户名单姓名,需求量; 2.由于公司的发展添加航线,增加对某个地区的航班,和取消对某地的航班。 3.承办订票义务:根据客户提出的要求(航班号,订票数额)查询该航班票额情况,若尚有余票,则客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需要重新询问客户要求。若需要,可登记排队后补; 4.承办退票业务:根据客户提供的情况为客户办理退票手续,然后查询该航班是否有人排队后补,30.首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问排在他后面的候补客户。

2008-12-29

本程序是模拟航空客运定票的业务活动,包括查询航线,客票预定和办理退票业务等活动。有了这个程序可以实现借助计算机实现上述业务的办理。

本程序是模拟航空客运定票的业务活动,包括查询航线,客票预定和办理退票业务等活动。有了这个程序可以实现借助计算机实现上述业务的办理。 系统能实现的操作和功能如下: 1. 查询航线:根据旅客提出的终点名 输出下列信息:终点站名,航班号,飞机号,星期几,6. 乘员定额,余票量,已订票的客户名9.单(包括姓名,订票量,航船舱等级1 2或3)以及等候替补的客户名单姓名,需求量; 2.由于公司的发展添加航线,增加对某个地区的航班,和取消对某地的航班。 3.承办订票义务:根据客户提出的要求(航班号,订票数额)查询该航班票额情况,若尚有余票,则客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需要重新询问客户要求。若需要,可登记排队后补; 4.承办退票业务:根据客户提供的情况为客户办理退票手续,然后查询该航班是否有人排队后补,30.首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问排在他后面的候补客户。

2008-12-25

查找城市信息 给出城市名返回其坐标 返回所有距离小于d的城市名

查找城市信息 返回城市坐标 返回所有距离小于d的城市名 若干城市信息存入一个到头结点的单链表

2008-12-10

按二叉树的形状打印二叉树

typedef struct Node//定义一个二叉树结点的结构体 { char data; //每个结点的数值 int num; //数没个结点的编号 struct Node * LChild; struct Node * RChild; }BiTNode,* BiTree; int a=0; void CreateBiTree(BiTree * bt)//创建一个二叉树 { char ch; ch=getchar(); //逐个的为结点赋值 if(ch==' ') * bt=NULL; else { * bt=(BiTree)malloc(sizeof(BiTNode)); (* bt)->data=ch; CreateBiTree(&((* bt)->LChild));//遍历左子树 CreateBiTree(&((* bt)->RChild));//遍历右子树 } } void posttree(BiTNode *bt) //通过后序遍历,给元素进行编号 { if(bt!=NULL) { bt->num=++a; //通过全局变量,给结点元素编号 posttree(bt->LChild); //遍历右子树 posttree(bt->RChild); //遍历左子树 } } /*按数的形状打印竖向二插树*/ void PrintTree(BiTNode *bt,int nLayer) { if(bt==NULL) return; PrintTree(bt->RChild, nLayer+4); for(int i=0;inum,bt->data);/*按逆中序输出结点,用程次决定左右位置*/ PrintTree(bt->LChild, nLayer+4); } void main() { BiTree bt; int i=0,nLayer=0; printf("\n你好:"); printf("\n请输入一个字符串,以空格作为空字符:\n"); CreateBiTree(&bt); posttree(bt); printf("按树状打印的二叉树的结点和编号为:\n"); printf("\n\n"); PrintTree(bt,nLayer); printf("\n\n^_^ ^_^ ^_^ 谢谢使用,再见!^_^ ^_^ ^_^\n\n\n"); }

2008-12-10

新串R中的每个字符在串S中的第一次出现的位置

已知S和T,求得所有包含在S中而不包含在T中的字符构成的新串R, 以及新串R中的每个字符在串S中的第一次出现的位置

2008-12-10

学生分数的统计,统计某分数的学生人数

#include<stdio.h> #define N 100 void main() { int i,j,m,n=0,a,b,score[N]; int Count=0; int Count1=0; int k=0; printf("输入总的学生数:\n"); //输入学生人数 scanf("%d",&m); for(i=0;i<m;i++) //输入学生成绩 { printf("输入第%d个人的成绩\n",i+1); scanf("%d",&score[i]); if(score[i]>100||score[i]<0) { printf("成绩在0~100之间,请重新输入!"); printf("输入第%d个人的成绩\n",i+1); scanf("%d",&score[i]); } } for(a=0;a<=100;a++) { n=0; for(b=0;b<=i;b++) { if(a==score[b]) n++; }; if(n>0) printf("分数为%d的人有%d\n",a,n); }; }

2008-12-10

回文,输入一段文字,会判断你输入的文字是不是回文

/*编写一个算法,判断依次读入的一个以@为结束符的字母序列,是否形如 '序列1&序列2'模式的字符序列。其中序列1&序列2中都不含字符'&', 且序列2 是序列1的逆序。例如。'a+b&b+a'*/

2008-12-09

商品货栈管理,通过栈和队列对商品货栈的管理

通过栈和队列对商品货栈的管理 typedef struct node { char good[20]; /*商品名*/ int date; /*商品生产日期*/ int price; /*商品价格*/ struct node *next; /*next指针*/ }LinkStackNode,LinkQueueNode,*LinkStack; /*队列指针的定义*/ typedef struct { LinkQueueNode *front; /*队列首指针*/ LinkQueueNode *rear; /*队列尾指针*/ }LinkQueue; LinkStackNode *initStack() { LinkStackNode *newgood; /*存放商品的栈*/ LinkStackNode *top; int choose=1; top=(LinkStackNode *)malloc(sizeof(LinkStackNode)); if(top==NULL) return ERR; top->next=NULL; top->next=NULL; while(choose) { newgood=(LinkStackNode *)malloc(sizeof(LinkStackNode)); printf("商品名:"); scanf("%s",newgood->good); printf("商品生产日期:"); scanf("%d",&newgood->date); printf("商品价格:"); scanf("%d",&newgood->price); newgood->next=top->next; top->next=newgood; printf("请选择下一次操作: 1:继续添加 0:添加结束 =>"); scanf("%d",&choose); } return top; } LinkQueue* initqueue(LinkQueue * q) { q->front=(LinkQueueNode *)malloc(sizeof(LinkQueueNode)); if(q->front!=NULL) { q->rear=q->front; q->front->next=NULL; } else return q; }

2008-12-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除