C课程设计集合的实现

功能需求
描述
编写这样一个程序:
接收来自标准输入的n条指令,指令有如下三种:
1. a 后面跟一个整数,表示向集合插入一个数
2. d 后面跟一个整数,表示从集合删除一个数,集合中有多个指定数时,删除一个即可
3. p 从小到大打印出集合中的数
输入
每行输入一条指令,注意指令可能不符合规范,整数可能超出C语言长整形范围,可能带符号,但长度不会超过100
输出
当输入指令为p时,从小到大输出集合中的数,当指令不合法时,输出“Invalid Command”
输入样例
a -2
a 31415926535897932
c
a 1
a 4
a 4
d 4
p

输出样例
Invalid Command
-2 1 4 31415926535897932
阅读剩余部分 -

Share

cunit例子

被测模块:

测试用例:

阅读剩余部分 -

Share

柔性数组

柔性数组(Flexible Array)也叫伸缩性数组,其实就是变长数组,反映了C语言对精炼代码的极致追求。这种代码结构产生于对动态结构体的需求。比如我们需要在结构体中存放一个动态长度的字符串,这时候,柔性数组可以大显身手了。
 C99使用不完整类型来实现柔性数组,标准形式如下:

    struct MyStruct

    {

      int a;

      double b;

      char c[]; // or char c[0]; 也可以用其他数据类型;

    }; 阅读剩余部分 -

Share

二叉树中序遍历

由于之前的任性,只投了几家公司,结果万万没想到,因为填错毕业时间而错失面试机会,疲惫的跑完一天宣讲,一共参加了4场笔试面试,其中有一道题颇有意思,跟大家分享下。
编程实现。
给定一个n个节点的二叉树的中序遍历,输出有多少种可能的二叉树与之对应?

这题是我今天做得最后一场笔试,坦率的讲我的内心是奔溃的,看到这题时我脑海中没有一点思路,先从几种简单的情况分析,看能否得到相应的规律。

f(0) = 1;
f(1) = 1;
f(2) = 2;
f(3) = 5;
f(4) = 14; 阅读剩余部分 -

Share

再谈二分查找

在4月份阿里实习面试时曾写过基本的二分查找,今天在看一本程序书时提到了几种二分查找的变形,觉得二分查找是那么的高大上,这就不难解释为什么那么多面试官喜欢问二分查找相关的问题了。

基本的二分查找:

变形问题一:集合中元素重复,返回首次出现的位置

对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。
给定一个整数数组a[]及它的大小n,同时给出要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。
测试样例:
[1,3,5,7,9],5,3
返回:1

第一次看到这个问题时我很机智的写下了如下代码: 阅读剩余部分 -

Share

缘起缘灭还自在

2015年7月22日博客从原来的香港主机搬到sae,单就从速度和稳定性上来讲sae确实比香港的要好不止一个档次,本来打算将博客原原本本迁移到sae。后来看了下博客中大部分都是一些现在看来毫无营养的文章,所以只搬过来20多篇文章。2011年10月分我曾写过一篇文章来记录当时申请到52coder.net域名的兴奋与冲动《创办我爱程序员的初衷》,那时的我在深圳上班,平时加班相对比较多,晚上下班后回到住处,打开各种教程开始学习,那时的我似乎有着无限憧憬,坚信技术能够改变未来,虽然我现在依然相信,但却少了当初的那么份憧憬。短短的三年里,一共写下了248篇文章,当然现在留下来的只有20多篇,有些流水帐文章,就让它随风去吧。 阅读剩余部分 -

Share

创办我爱程序员的初衷

2011年的10月16日是人类历史上平凡的一天,但对于我来讲却极为不平凡。那一天我注册了域名www.52coder.net,从此我又多了一个身份,人们尊敬的称我为——站长。一直以来我都自认为自己是一个缺乏创造性的人,用武侠小说里的话形容就是“资质平庸绝非练武奇才”。

记得那是一个周末的下午,我早早的起床,习惯性的打开电脑,然后和大学时的舍友聊起域名这件事,出乎我的意料,他在短短10分钟的时间内给我起了一些如 vcbank.net focusc.net 52coder.net 等等让人拍案叫绝的域名。而在这些域名中,52coder.net犹如一颗耀眼的明星,瞬间我就被它所吸引。在我即将注册域名52coder.net时有一种非常奇妙的感觉洋溢在心中,如果非要形容那个时候的感觉的话,我想有个成语再适合不过了——一见钟情。

有人不理解为什么在这个论坛泛滥的时代,我还要义无反顾的做论坛? 阅读剩余部分 -

Share

折半查找

4.21号去参加阿里的实习生招聘,投递的岗位是C/C++方向,下午2点,我悠闲的从学校北门前往悦豪酒店,走到酒店后扫描二维码,去房间等待面试,面试的内容涉及面非常广。
从linux命令,STL ,操作系统,c/c++语法,算法,包罗万象。下午迷迷糊糊面试完基本内容后面试官给了我一张纸和笔让我写两个算法,一:快速排序,二:折半查找。
当然快速排序我写的还是很快的,可是当我写折半查找时悲剧发生了.
如下代码是我在考场上所写:

当我写完后面试官问我,你觉得你写的对吗?我这个时候表现的非常机智,我反问他你觉得对吗?后来问了问stl的内容,一面完后走出面试房间,我TM突然发现,没有递归终止条件呀,如果查找不成功,low>=high时程序陷入死循环. 阅读剩余部分 -

Share

动态规划—最长公共子序列

1、基本概念

一个给定序列的子序列就是该给定序列中去掉零个或者多个元素的序列。形式化来讲就是:给定一个序列X={x1,x2,……,xm},另外一个序列Z={z1、z2、……,zk},如果存在X的一个严格递增小标序列<i1,i2……,ik>,使得对所有j=1,2,……k,有xij = zj,则Z是X的子序列。例如:Z={B,C,D,B}是X={A,B,C,B,D,A,B}的一个子序列,相应的小标为<2,3,5,7>。从定义可以看出子序列直接的元素不一定是相邻的。

公共子序列:给定两个序列X和Y,如果Z既是X的一个子序列又是Y的一个子序列,则称序列Z是X和Y的公共子序列。例如:X={A,B,C,B,D,A,B},Y={B,D,C,A,B,A},则序列{B,C,A}是X和Y的一个公共子序列,但不不是最长公共子序列。

最长公共子序列(LCS)问题描述:给定两个序列X={x1,x2,……,xm}和Y={y1,y2,……,yn},找出X和Y的最长公共子序列。 阅读剩余部分 -

Share

求int型数据在内存中存储时1的个数

求int型数据在内存中存储时1的个数
输入一个int型数据,计算出该int型数据在内存中存储时1的个数。

阅读剩余部分 -

Share
Share

近期文章

Views

近期评论

文章归档

站点信息

共享协议:署名-非商业性使用-相同方式共享 3.0 Unported 许可协议
百度谷歌Bing雅虎收录.PR 3
创建时间:2012.02.22
备案信息:粤ICP备11094390