开拓思维编程
Strive--顾
一日之计在于晨,一生之计在于勤。
展开
-
两个栈实现一个队列功能
今天看到一道题目:使用栈实现一个队列功能。用C++来描述大致是这样的:已知下面Stack类及其3个方法Push、Pop和 Count,请用2个Stack实现Queue类的入队(Enqueue)出队(Dequeue)方法 class Stack { … public: void Push(int x); // Push an element in stack;原创 2017-07-11 11:54:18 · 328 阅读 · 0 评论 -
自主编程实现String类的构造函数,析构函数,拷贝构造函数,赋值函数
#include #include using namespace std ; class String { public: String(const char* str = NULL) ; //构造函数 ~String(void) ; //析构函数 String(const String &oth原创 2017-09-07 10:28:51 · 347 阅读 · 0 评论 -
自主编程实现strlen,strcpy,strcmp,strcnpy,strcat,strstr,strchr库函数
为了对strlen,strcpy,strcmp,strcnpy,strcat,strstr,strchr这几个库函数有深刻的理解和认识,所以自己就编写了一些程序函数来实现这些库函数的功能,下面是具体的程序代码: (1)strlen:计算给定字符串的(unsigned int型)长度,不包括'\0'在内 #include #define N 100 int my_strlen原创 2017-07-12 20:40:05 · 957 阅读 · 0 评论 -
自主编程实现二叉树
在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-1个结点;对任何一原创 2017-07-26 15:38:23 · 543 阅读 · 0 评论 -
自主编程实现哈希表
哈希表是种数据结构,它可以提供快速的插入操作和查找操作。哈希表也有一些缺点它是基于数组的,数组创建 后难于扩展,某些哈希表被基本填满时,性能下降得非常严重。这个问题是哈希表不可避免的,即冲突现象:对不同 的关键字可能得到同一哈希地址。 第一次接触哈希表时,它的优点多得让人难以置信。不论哈希表中有多少数据,插入和删除(有时包括侧除)只需要接近常量的时间即0(1)的时间级。实原创 2017-07-26 00:04:17 · 441 阅读 · 0 评论 -
自主编程实现栈和链式栈
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 栈作为一种数据结构,是一种只能在一端进行插入和删除操作原创 2017-07-20 00:05:00 · 259 阅读 · 0 评论 -
自主编程实现选择,冒泡,快速,归并,希尔排序
(1)选择排序:选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据 元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳 定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。 #include #define N 5原创 2017-07-18 23:56:14 · 422 阅读 · 0 评论 -
自主编程实现单链表
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结 点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单 元,指针就是连接每个结点的地址数据。 下面是实现单链表的编程代码: #include #include #define OK原创 2017-07-20 23:55:01 · 274 阅读 · 0 评论 -
Linux进程间通信——使用共享内存
下面将讲解进程间通信的另一种方式,使用共享内存。 一、什么是共享内存 顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc转载 2017-07-17 15:12:09 · 181 阅读 · 0 评论 -
自主编程实现数组队列和链式队列
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以原创 2017-07-20 16:44:26 · 222 阅读 · 0 评论 -
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”
首先,作为extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。 通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。例如,如果模块B欲引用该模块A中定义的全局变量和函数时只需包含模块A的头文件即可。这样,模块B中调用模块A中的函数时,在编译阶段,模块B虽然找不到该转载 2017-07-11 15:42:27 · 552 阅读 · 0 评论 -
自主编程实现二分法查找
今天出去笔试,遇到一道题目让我们用二分法查找一已排好序的数组中的数据,并返回该数据的位置,这 是我第一次碰到使用二分法的编程题,一开始还是有点小慌得,毕竟之前没有写过,怕有些注意点没法试卷中 检测出来,不过二分法的概念还是很好理解的,主要思想是:(设查找的数组区间为a[front, end]) (1)确定该区间的中间位置K (2)将查找的值T与a[k]比较。若相等,查找成功返回原创 2017-09-06 22:42:53 · 1144 阅读 · 0 评论