
C++基础
文章平均质量分 68
绿皮火车况且况且
More practices
展开
-
已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出两个集合A和B的差集(即仅由在A中出现而不在B中出现的元素所构成的集合),并以同样的形式存储,同时返回该集合的元素个数。
已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出两个集合A和B的差集(即仅由在A中出现而不在B中出现的元素所构成的集合),并以同样的形式存储,同时返回该集合的元素个数。 代码如下:#include using namespace std;struct LinkNode{ int data; LinkNode* next;};LinkNode* min原创 2016-11-06 17:14:11 · 22829 阅读 · 2 评论 -
创建双向训练链表
下面创建的是双向训练链表,注意 是循环的。#include using namespace std;struct BiD_LNode{ int data; BiD_LNode *next; BiD_LNode *prior;};//使用头插法创新双向循环链表void Create_LinkList(BiD_LNode *&head){ head = new BiD_LNo原创 2016-05-18 22:23:55 · 496 阅读 · 0 评论 -
快速排序、归并排序、堆排序的实现
最近总是遇到面试问到归并排序的问题,下面我们来走一遍归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。//原创 2015-03-22 15:45:49 · 703 阅读 · 0 评论 -
给出两个长度为N的有序数组A和B 给出求中位数的算法
有个同学阿里面试被问到“给出两个长度为N的有序数组A和B 给出求中位数的算法” 怎么办??很熟悉是吧 但是就是想不起来。。题目是《算法导论》上的一道习题,不过已多次出现在面试题当中。注意,此题中两个数组的长度是相等的。当然,长度不等的话也可以做,只是要多些判断条件。参考leetcode题目 Median of Two Sorted Arrays方法1 直接遍历直接原创 2015-03-22 16:42:57 · 3520 阅读 · 0 评论 -
波兰表达式和逆波兰表达式
波兰表达式和逆波兰表达式分别是一颗二叉树的前序遍历和后序遍历。方法一:递归#include #include using namespace std;struct Tree {char value;Tree *left;Tree *right;};void solution_LRD(Tree *head){if(head){s原创 2015-06-02 16:41:48 · 626 阅读 · 0 评论 -
把二元查找树转变成排序的双向链表
题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。10/ \6 14/ \ / \4 8 12 16转换成双向链表4=6=8=10=12=14=16。#include#include#include#includeusing namespace std;int findGre原创 2015-06-02 16:43:23 · 423 阅读 · 0 评论 -
二叉树的前中后遍历递归非递归实现
好吧,我终于把前中后 递归和非递归的都写出来了。。如下: 不解释#include#includeusing namespace std;struct BTNode{ BTNode *left; BTNode *right; int data;};void AssertBTN(BTNode *&root1, int a){ if (root1 == NULL)原创 2015-08-11 11:03:16 · 431 阅读 · 0 评论 -
将一个十进制整数转换为二进制字符串
将一个十进制整数转换为二进制字符串。下面的函数不仅仅可以转换成二进制,还可以转换为八进制十六进制等等。#include using namespace std;char *myitoa(int num, char *str, int radix)//num是输入数字,str是存放对应的字符串,radix是进制{ char* temp_arr = new char[10]; int原创 2016-05-16 17:00:25 · 6080 阅读 · 0 评论 -
C++统计一个文件中每个数字字符(0~9)出现的次数
现在有一个文本文件,请写一个程序,统计该文件中每个数字字符(0~9)出现的次数,并将统计结果打印到屏幕上。#include#includeusing namespace std;int main(){ ifstream fopen("D:\\test.txt"); if (!fopen) { cout << "The file can not be opened" << en原创 2016-04-02 10:38:18 · 6230 阅读 · 0 评论 -
构造哈弗曼树
#includeusing namespace std;struct HTreeNode{ int weight; HTreeNode* parent; HTreeNode* lchild; HTreeNode* rchild;};HTreeNode* CreatHuffmanTree(int *w, int n){ int m = 2 * n - 1; HTreeNode*原创 2016-02-27 23:29:07 · 548 阅读 · 1 评论 -
字符串循环右移
#include#includeusing namespace std;//反转[low high]之间字符串void Reverse_str(string& str, int low, int high){ char temp; while (low<high) { temp = str[low]; str[low] = str[high]; str[high] =原创 2015-11-10 15:19:49 · 522 阅读 · 0 评论 -
二叉排序树的构建
下面是二叉排序树构建的代码,按照严蔚敏数据结构教材上的方法写的:#includeusing namespace std;struct ListNode{ ListNode* left; ListNode* right; int data;};bool SearchBST(ListNode* T, int key, ListNode* f, ListNode*& p){原创 2015-11-04 17:56:13 · 1751 阅读 · 4 评论 -
折半查找的递归和非递归实现
#includeusing namespace std;int BinarySearch(int* arr,int start,int end,int x){ //int low = 0, high = end - 1; if (start == end)return -1; int low = start, high = end; int mid = (high + low)/2;原创 2015-10-30 23:33:47 · 582 阅读 · 0 评论 -
找两条单链表的公共结点
题目:两个单向链表,找出它们的第一个公共结点。#includeusing namespace std;struct ListNode{ int data; ListNode *next;};ListNode* Create_Linklist(int *arr,int len){ ListNode* head = new ListNode(); head->next = NUL原创 2015-10-22 23:24:25 · 903 阅读 · 1 评论 -
两个有序链表的合并
对于两个有序链表的合并问题,在《剑指offer》中,采用的是如下递归的方式完成的,即:listNode* merge(listNode* pHead1, listNode* pHead2){ if(pHead1 == NULL) return pHead2; else if (pHead2 == NULL) return pHead1; li原创 2015-10-21 22:51:02 · 1269 阅读 · 1 评论 -
猴子吃桃问题
猴子吃桃问题:有一堆桃子不知数目,猴子第一天吃掉一半,觉得不过瘾,又多吃了一只,第二天照此办法,吃掉剩下桃子的一半另加一只,天天如此,到第十天早上,猴子发现只剩一只桃子了,问这堆桃子原来有多少只?#includeusing namespace std;int Eat_Peaches(int n){ if (n == 10) return 1; else return (Eat原创 2015-10-20 10:32:31 · 654 阅读 · 0 评论 -
单链表反转
究竟要如何反转呢?我们不妨拿一个例子来说明一下算法。看懂怎么反转的了吧? 代码如下:#include#include#includeusing namespace std;struct ListNode{ ListNode* next; int data;};void Creat_LinkList(ListNode* &head){ head = new原创 2015-10-03 16:07:45 · 597 阅读 · 0 评论 -
leetcode之Permutations问题
#include#includeusing namespace std;class Solution {public: vector> permute(vector& nums);};int fractorial(int N){ return N == 1 || N == 0 ? 1 : N*fractorial(N - 1);}void next_index(vector原创 2017-01-24 20:46:14 · 496 阅读 · 0 评论