
数据结构与算法
文章平均质量分 54
jli2014
这个作者很懒,什么都没留下…
展开
-
还原二叉树
//还原二叉树#include #include #include using namespace std;struct TreeNode{char data; struct TreeNode* left; struct TreeNode* right;};//中序,前序——>后序void ToAft(cha原创 2014-11-01 12:54:41 · 362 阅读 · 0 评论 -
二进制中1的个数
解法一(未考虑负数)分析:判断整数二进制表示中最右边一位是不是1,然后右移,知道整数变为0为止。最右边位是不是1的判断:整数与1做位与运算,结果是1则表示整数最右边一位为1,否则为0。int NumberOf1(int n){ int count=0; while(n) { if(n&1)原创 2015-03-13 21:39:26 · 287 阅读 · 0 评论 -
冒泡排序
算法实现:void bubbleSort(int a[], int n){ bool flag=true; int k=n; while(flag) { flag=false; for(int j=1; j {原创 2015-03-13 16:05:50 · 237 阅读 · 0 评论 -
用两个栈实现队列
问题描述:用两个栈实现一个队列,队列的声明如下:请实现函数appendTail和deleteHead,分别完成在队列尾部插入结点和队列头部删除结点的功能。分析:当stack2非空时,stack2的栈顶元素时最先进入队列的元素,可以弹出;当stack2为空时,把stack1中元素逐个弹出并压入stack2,由于先进入队列的元素被压到stack1的底部,经过弹出和压入stack2之后就处于stac原创 2015-03-13 15:25:14 · 246 阅读 · 0 评论 -
链表相关算法:
链表结点定义如下:struct ListNode{ int value; ListNode * next;};算法一:从尾到头打印链表//栈实现void PrintListFromTaliToHead(ListNode *pHead){ std::stack nodes; ListNode *pNode=pHead原创 2015-03-12 20:25:35 · 434 阅读 · 0 评论 -
树的子结构
题目描述:输入两棵二叉树A和B,判断B是不是A的子结构。二叉树的定义如下:struct BinaryTreeNode{ int value; BinaryTreeNode *left; BinaryTreeNode *right;};遍历二叉树bool HasSubTree(BinaryTreeNode *pRoot1, B原创 2015-03-20 09:42:27 · 258 阅读 · 0 评论 -
二叉搜索树的后序遍历序列
题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。bool VerifySequenceOfBST(int sequence[], int length){ if(sequence==NULL || length return false;原创 2015-03-16 11:06:24 · 274 阅读 · 0 评论 -
两个链表的第一个公共结点
struct ListNode{ int value; ListNode *next;};ListNode *FindFirstCommonNode(ListNode *pHead1, ListNode *pHead2){ //得到两个链表的长度 unsigned int nLength1=GetListLength(pHead1原创 2014-12-19 11:32:25 · 275 阅读 · 0 评论 -
二叉树分层遍历(含之字形打印)
//二叉树结点定义struct TreeNode{int data;TreeNode *left;TreeNode *right;};void PrintNodeByLevel(TreeNode *root){if(root==NULL)return;vectorvec;vec.push_back(root);int cur=0,last=1;原创 2014-11-05 14:32:54 · 373 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面
分析:设置两个指针,第一指针初始化时指向数组的第一个数字,它只向后移动;第二个指针初始化时指向数组的最后一个数字,它只向前移动。在两个指针相遇之前,第一个指针总是位于第二个指针的前面,如果第一个指针指向的数字是偶数,第二个指针指向的数字是奇数,就交换这两个数字。void ReorderOddEven(int *pData, unsigned int length){ if(原创 2015-03-13 22:32:58 · 246 阅读 · 0 评论