编程练习
文章平均质量分 61
wyq_tc25
这个作者很懒,什么都没留下…
展开
-
反转链表
反转链表 ListNode* ReverseList(ListNode* pHead) { if(pHead==NULL) return NULL; ListNode* pReservedHead = pHead; ListNode* pNode = pHead; ListNode* pPrev = NULL;原创 2016-05-24 10:58:22 · 269 阅读 · 0 评论 -
实现strcpy函数
以下转自:http://blog.csdn.net/gpengtao/article/details/7464061/大家一般认为名不见经传strcpy函数实现不是很难,流行的strcpy函数写法是:[cpp] view plain copy char *my_strcpy(char *dst,const char *src) { assert(转载 2016-06-24 10:45:41 · 371 阅读 · 0 评论 -
基数排序
一. 算法描述基数排序(以整形为例),将整形10进制按每位拆分,然后从低位到高位依次比较各个位。主要分为两个过程:(1)分配,先从个位开始,根据位值(0-9)分别放到0~9号桶中(比如53,个位为3,则放入3号桶中)(2)收集,再将放置在0~9号桶中的数据按顺序放到数组中重复(1)(2)过程,从个位到最高位(比如32位无符号整形最大数4294967296,最高位10位)以【52转载 2016-06-24 12:21:59 · 219 阅读 · 0 评论 -
实现strcpy函数
实现strcpy函数#include "assert.h"#include "windows.h"char* my_strcpy(char *dst,const char*src){ assert(dst!=NULL); assert(src!=NULL); char *ret = dst; //while(*dst++=*src++);//要判断结尾 while((*d原创 2016-06-25 22:05:12 · 268 阅读 · 0 评论 -
从头到尾打印链表
从头到尾打印链表 vector printListFromTailToHead(struct ListNode* head) { vector num; if(head==NULL) return num; stack stknum; ListNode *p = head; while(p原创 2016-05-23 10:07:40 · 323 阅读 · 0 评论 -
重建二叉树
重建二叉树 struct TreeNode* reConstructBinaryTree(vector pre,vector in) { if(pre.empty()||in.empty()||pre.size()!=in.size()) return NULL; TreeNode *root = new TreeNode(p原创 2016-05-23 10:33:21 · 286 阅读 · 0 评论 -
把数组排成最小的数
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。#include #include #include #include #include //for stringstreamusing namespace std; //static bool原创 2016-06-13 10:05:52 · 190 阅读 · 0 评论 -
判断一个括号字符串是否匹配正确
判断一个括号字符串是否匹配正确,如果括号有多种,怎么做?#include#include#includeusing namespace std; bool IsMatch(string str){ int i=0; stack stk; bool flag=true; while(i<str.size()&&flag==true) {原创 2016-06-15 09:44:18 · 838 阅读 · 0 评论 -
按位反转无符号字符
以下转自:http://www.xuebuyuan.com/1709778.html题目:一个unsigned char,记为src,把其中的字节高位和低位全部互换 分析:想找出src中某一位的bit,肯定是要拿一个该位为1其他位为0的char,记为flag,和他进行&,取出该位的值,记为onebit。把该onbit左移(或者右移,看是否现在已经到了中间转载 2016-06-30 22:18:03 · 727 阅读 · 0 评论 -
指定文件中查找一个字符串并显示该字符串出现的次数
以下转自:http://bbs.csdn.net/topics/110120343#include "iostream"#include #include using namespace std;int CountSubString(string const& str, string const& substr){ int nCount = 0; string::si转载 2016-07-01 10:47:27 · 3893 阅读 · 0 评论 -
阿里面试算法题--版本号更新
按照如下规则更新版本号:5.12.16 -> 5.13.05.12.0 -> 5.12.0最后一位为0则中间的数字+1,否则保持不变#include "stdafx.h"#include #include #include using namespace std;char* Edition(char* str) { if(str==NULL) return N原创 2016-05-20 16:55:21 · 437 阅读 · 0 评论 -
第一个只出现一次的字符
第一个只出现一次的字符 int FirstNotRepeatingChar(string str) { if(str.size()==0) return -1; const int tableSize=256; unsigned int hashTable[tableSize]={0}; //int has原创 2016-05-20 10:59:32 · 245 阅读 · 0 评论 -
调整数组顺序使奇数在前
采用冒牌排序的思想//void Adjust(vector numbers){ //这样不会对原来的vector进行改变void Adjust(vector &numbers){ if(numbers.empty()) return; int len = numbers.size(); for(int i=0;i<len;i++){ for(int j=len-1;j>i;j-原创 2016-05-24 10:44:23 · 217 阅读 · 0 评论 -
树的子结构
树的子结构 bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) { //if(pRoot1==NULL&&pRoot2==NULL) //return true; if(pRoot1==NULL||pRoot2==NULL)//只要一个为空就false,理解为Tree1如果原创 2016-05-24 11:29:26 · 207 阅读 · 0 评论 -
栈的压入、弹出序列
栈的压入、弹出序列 bool IsPopOrder(vector pushV,vector popV) { bool result = false; if(pushV.empty()||popV.empty()) return result; if(pushV.size()!=popV.size())原创 2016-05-24 16:47:30 · 261 阅读 · 0 评论 -
背包问题
背包问题#include "stdafx.h"#include #include using namespace std;const int MAX_C = 10;const int weight[] = {2,2,6,5,4};const int value[] = {6,3,5,4,6};const int n = sizeof(weight)/sizeof(weight原创 2016-05-25 15:20:25 · 180 阅读 · 0 评论 -
快速排序
快速排序注意vector作为参数传递时的形式。void Qsort(vector &a,int low,int high);int Partiton(vector &a,int low,int high);void QuickSort(vector &a) { if(a.size()==0||a.size()==1) return; int原创 2016-05-25 21:24:25 · 200 阅读 · 0 评论 -
判断二叉树的后续遍历序列
判断二叉树的后续遍历序列 bool VerifySquenceOfBST(vector sequence) { if(sequence.empty()) return false; int len =sequence.size(); int i=0; int root=sequence[len-1];原创 2016-05-27 23:16:21 · 548 阅读 · 0 评论 -
打印杨辉三角形
#include "stdafx.h"#include #include #include #include //for setw()using namespace std;void PrintV(vector v);void PrintTri(int n){ if(n<1) return; int length = n*2-1; //最后一层一共有n*2-原创 2016-05-19 14:55:16 · 466 阅读 · 0 评论 -
字符串反转
#include "stdafx.h"#include using namespace std;void Reverse(char *str){ if(str==NULL) return; char *r = str; //while(r!=NULL)是错的,因为r是内存地址,陷入死循环 while(*r!=NULL) r++; r--; while(原创 2016-05-19 15:51:42 · 158 阅读 · 0 评论 -
利用快排找中位数【未完成】
快速排序找中位数int sort(int* R,int low,int high) ; int median1(int *R,int n); int median2(int* R,int low,int high); const int mmax = 10000001; // 9999; int a[mmax] = {1, 2, 4, 6, 3,原创 2016-06-02 10:19:05 · 596 阅读 · 0 评论 -
计算二叉树的深度+判断二叉树是否是平衡二叉树
计算二叉树的深度判断二叉树是否是平衡二叉树原创 2016-06-23 09:22:07 · 296 阅读 · 0 评论