C/C++/数据结构
文章平均质量分 75
记录C/C++/数据结构代码。
春风来不来
CXY 进化中
展开
-
使用C语言打印不同星号图案(矩形 平行四边形 三角形)
打印自定义行数的矩形打印效果:参考代码:#includeint main(){ int i,j,n; printf("请输入要打印矩形的行数:"); scanf("%d",&n); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { printf("* ");原创 2016-06-25 10:35:59 · 74631 阅读 · 7 评论 -
C语言求两个数的最大公约数的三种算法
最大公约数:指某几个整数共有约数中最大的一个。方法一:相减法思路:1.如果a>b a = a - b;2.如果b>a b = b - a;3.假如a = b ,则 a或b 是最大公约数4.如果a != b,则继续从1开始执行5.也就是说循环的判断条件为a != b ,直到a = b时,循环结束。举例说明:a原创 2016-06-27 18:49:16 · 38541 阅读 · 9 评论 -
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 确定比赛的名次
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第一,我第三。B选手说:我第二,E第四。C选手说:我第一,D第二。D选手说:C最后,我第三。E选手说:我第四,A第一。比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。当时看到这道题自己先在本子先算出来结果后 上网查了下答案 算的是对的 但是当要让计算机理解时就一脸懵逼,也看了网上的一原创 2016-07-21 15:25:36 · 2226 阅读 · 0 评论 -
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手。看到这道题的 第一件事情就是把思路先捋一捋为了好理解 用0来表示不是凶手 1表示是凶手我们先假设所有人都是清白的也就原创 2016-07-21 17:31:15 · 5785 阅读 · 7 评论 -
用C语言写三子棋游戏
#include #include enum G{ EXIT, PLAY};void menu(){ printf("##############1.开始游戏##############\n"); printf("##############0.退出游戏##############\n");}void fill(char a[3][3]){ int ran1 = 0原创 2016-07-22 20:40:49 · 2535 阅读 · 2 评论 -
有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student".
用数组实现:#include int strlen(char *arr){ char *ret=arr; while((*ret++)!='\0') ; return ret-arr-1;}char* reserve_a(char *arr){ int sz = strlen(arr); int lift = 0; char tem; int i = 0; in原创 2016-07-25 22:02:05 · 672 阅读 · 0 评论 -
调整数组使奇数全部都位于偶数前面。 题目: 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
题目: 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。#include #include void sort(int *a,int sz){ int i = 0; int j = sz-1; for(i=0; i!=j; i++) { if(a[i]%2!=0) continue;原创 2016-08-02 18:24:14 · 3489 阅读 · 0 评论 -
大端小端模式简单介绍 以及三种检测大小端存储的方法
大端模式:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。原创 2016-08-08 23:41:35 · 7422 阅读 · 0 评论 -
文件读写操作+动态内存分配+结构体指针+函数指针数组实现通讯录系统
实现一个通讯录;通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址提供方法:1. 添加联系人信息2. 删除指定联系人信息3. 查找指定联系人信息4. 修改指定联系人信息5. 显示所有联系人信息6. 清空所有联系人7. 以名字排序所有联系人8. 保存现有文件到桌面的通讯录.txt文件9. 从原创 2016-08-09 23:44:41 · 1672 阅读 · 0 评论 -
单链表操作之合并两个有序单链表---递归 and 非递归实现
问题提出:现有无头结点有序单链表pHead1和无头结点有序单链表pHead2,要求将两个链表合并后依然有序。如: pHead1 为 1 3 5 7 9 pHead2 为 2 4 6 8 10 合并后 为1 2 3 4 5 6 7 8 9问题解决:(1)递归实现1.对空链表存在的情况进行处理,原创 2016-09-23 21:02:54 · 13861 阅读 · 0 评论 -
c++实现日期类(class Date) 构造函数 拷贝构造 操作符重载(输入输出 比较操作 算数运算 自增自减)
c++实现日期类(class Date) 构造函数 拷贝构造 操作符重载(输入输出 比较操作 算数运算 自增自减)原创 2016-10-30 00:22:08 · 3417 阅读 · 0 评论 -
c++ 实现双向链表构造函数,拷贝构造函数,析构函数,输出操作符重载,赋值操作符重载,头插尾插,头删尾删,任意位置插入,任意位置删除,查找等
构造函数,拷贝构造函数,析构函数,输出操作符重载,赋值操作符重载,头插尾插,头删尾删,任意位置插入,任意位置删除,查找等原创 2016-11-05 17:20:31 · 2710 阅读 · 0 评论 -
【c++继承】继承是什么,生活中的继承,访问限定符对继承有哪些影响?
继承一、继承是什么通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类称为基类(Base Class)或者父类。由基类派生出的新类称为派生类(Derived Class ),又称为子类。继承也是代码复用最重要的手段。二、生活中的继承原创 2016-11-08 23:03:58 · 1085 阅读 · 0 评论 -
【c++继承】继承关系中派生类对象构造函数和析构函数调用顺序
一、派生类对象中基类构造函数和派生类中构造函数调用顺序(WIN7 64位 VS2012)(1)、先执行派生类的构造函数还是先执行基类中的构造函数?利用下面这段代码进行打印测试#include using namespace std;// 基类class BaseClass{public: BaseClass() { cout << "BaseClass()" <<e原创 2016-11-12 16:20:45 · 5535 阅读 · 0 评论 -
【c++】深入剖析虚拟继承与各种继承关系中派生类内成员内存分布情况及虚基类表的内容
单继承 多继承 多重继承 菱形继承 单继承与虚继承 多继承与虚继承 多重继承与虚继承 菱形继承与虚继承 虚基类表指针 虚基类表 不同继承方式成员对面模型 内存分布情况 赋值顺序原创 2016-11-13 23:31:03 · 2397 阅读 · 1 评论 -
【c++】实现双向链表List类及测试
【c++】实现双向链表List类及测试(拷贝,构造,赋值重载,头插尾插,头删尾删等)原创 2016-11-22 09:52:48 · 965 阅读 · 0 评论 -
【c++模板】模拟实现有模板的双向链表(List)(声明和定义分离)
List.h#pragma once/* 环境: win7 64位 vs2012 */#include using namespace std;templatestruct Node{ Node(const T& value) :_value(value) ,_pPre(nullptr) ,_pNext(nullptr) {} T _value; Nod原创 2016-11-24 14:42:24 · 393 阅读 · 0 评论 -
【c++】多态总结
什么是多态?多态是指相同对象收到不同消息,或不同对象收到相同消息时产生不同的动作。多态的分类:1、静态多态【早绑定】指相同对象收到不同消息时产生不同的动作。比如说,函数重载,计算两个数的和的函数Add,可以是Add(int a, int b)计算两个整型的和, 也可以重载为Add(double a, double b),这里函数Add就是相同的对象,而参数就是发出原创 2016-12-23 21:05:37 · 394 阅读 · 0 评论 -
【c++】利用循环和栈实现走迷宫
要求:1、将地图的数组保存在文件中,从文件中读取行列数2.、动态开辟空间保存地图3.、运行结束后再地图上标出具体的走法说明:1、文件中第一行分别放置的是地图的行数和列数2、其中1表示墙,即路不通,0表示路,即通路3、程序运行结束后用2标记走过的路径4、当走到“死胡同”时用3标记此路为死路5、每到一个点,按照 左 上 右 下 的顺序去试探6、没原创 2016-12-24 17:42:00 · 3195 阅读 · 1 评论 -
【c++】利用递归实现走迷宫
要求:1、将地图的数组保存在文件中,从文件中读取行列数2.、动态开辟空间保存地图3.、运行结束后再地图上标出具体的走法说明:1、文件中第一行分别放置的是地图的行数和列数2、其中1表示墙,即路不通,0表示路,即通路3、程序运行结束后用2标记走过的路径4、当走到“死胡同”时用3标记此路为死路5、每到一个点,原创 2016-12-24 18:40:20 · 5451 阅读 · 0 评论 -
【C++】简单实现String类--深拷贝的普通版本和简洁版本
String 深拷贝普通版本#define _CRT_SECURE_NO_WARNINGS // 去除 vs下 函数不安全的警告#ifndef _STRING_H_#define _STRING_H_#include using namespace std;// 深拷贝的普通版本class String{private: char* _data; public原创 2016-12-27 21:45:53 · 555 阅读 · 0 评论 -
【c++】模拟实现栈 类模板(Stack的基本操作)
// 坏境 win7 x64 vs2012#include #include using namespace std;template class Stack{public: // 构造函数 explicit Stack(const size_t capacity = 10) :_size(0) ,_capacity(10) { // 最小分配10个 大于10原创 2016-12-30 21:09:56 · 1656 阅读 · 0 评论 -
【c++】模拟实现顺序队列方法一
这是模拟实现顺序队列的第一种方法。就是入队时队尾在不断后移,直到满,出队时队头不断后移,直到空。如下如示例:代码以及简单测试:#include // assert();#include using namespace std;// 头在不断变的顺序队列 (非循环队列)templateclass Queue{ public:原创 2016-12-31 14:45:06 · 575 阅读 · 0 评论 -
【c++】模拟实现顺序队列方法二
这是模拟实现顺序队列的第二种方法。就是队头保持不变,队尾在变。入队时,队尾向后走,出队时将除队头以外的所有数据向前移动一步。如下如示例:1.代码示例// 顺序队列实现方法2 (非循环队列) 对头保持不变#include #include using namespace std;template class Queue原创 2016-12-31 16:28:54 · 620 阅读 · 0 评论 -
求出区间[a,b]中所有整数的质因数分解。
问题描述 求出区间[a,b]中所有整数的质因数分解。输入格式 输入两个整数a,b。输出格式 每行输出一个数的分解,形如k=a1*a2*a3...(a1样例输入3 10样例输出3=34=2*25=56=2*37=78=2*2*29=3*310=2*5提示 先筛出所有素数,然后再原创 2017-01-23 19:02:18 · 9076 阅读 · 1 评论 -
【面试题】实现一个栈要求Push,Pop,Min(返回栈中最小值的操作)的时间复杂度为O(1)
思路:用两个栈来实现,栈sData存放入栈元素,栈sMin存放最小值。按照元素入栈顺序,将要入栈的第一个元素,同时压入两个栈中。后续每个元素入栈时,与sMin栈中栈顶元素比较大小,若入栈元素data 小于sMin栈顶元素,则把data同时压入两个栈中,若data大于sMin栈中栈顶元素,则只压入栈sData中。出栈时,判断两个栈顶元素是否相等,若相等则两个栈同时执行出栈操作,不相等原创 2017-02-15 21:02:50 · 4443 阅读 · 1 评论 -
【数据结构】实现大小堆也叫二叉堆(类似c++中的优先队列)
二叉堆:是一种特殊的堆,依赖于完成完全二叉树和向量实现的。分为最大堆和最小堆。最大堆:父节点的键值总是大于或等于任何一个子节点的键值。最小堆:父节点的键值总是小于或等于任何一个子节点的键值。存储:二叉树一般用数组来存储表示,在下面的实现中使用了STL中的vector。根节点在数组中的位置是0,第n个位置的左孩子下标为n*2+1,右孩子为2*n原创 2017-02-25 15:08:35 · 830 阅读 · 0 评论 -
二叉搜索树详解及实现代码(BST)
概念二叉搜索树(Binary Search Tree),又称二叉排序树,它或者是一颗空树,或者具有如下性质的树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树基本操作插入向二叉搜索树中插入新元素时,必须先检测这个元素是否在树中已经存在。如果已经存在,则不进行插入,如果元素不存在则将新元素插入原创 2017-04-15 22:10:01 · 5427 阅读 · 3 评论 -
【数据结构】向STL看齐-模拟实现红黑树
目标:回顾模板分离编译,掌握平衡树树的左旋和右旋,掌握红黑树插入过程调整逻辑,即旋转及变色的分类。红黑树的特点:1、任意一个结点要么是红色,要么是黑色2、根结点是黑色3、一条路径上不能出现两个连续的红色结点4、从根节点到任一叶子节点的黑色结点个数相同5、NUL结点默认为黑色结点(可忽略)使用模板分离编译实现红黑树的基本操作:插入、判空、查找是否存在、个数、中序打印等。原创 2017-05-16 15:11:42 · 563 阅读 · 0 评论