数据结构
子墨777
Try to make yourself more excellent!
展开
-
求最长公共子序列
给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少。输入格式第一行包含两个整数N和M。第二行包含一个长度为N的字符串,表示字符串A。第三行包含一个长度为M的字符串,表示字符串B。字符串均由小写字母构成。输出格式输出一个整数,表示最大长度。数据范围1≤N≤1000,输入样例:4 5acbdabedc输出...原创 2020-03-28 14:46:23 · 317 阅读 · 0 评论 -
01 背包问题
有N件物品和一个容量是V的背包。每件物品只能使用一次。第i件物品的体积是vi,价值是wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有N行,每行两个整数vi,wi,用空格隔开,分别表示第i件物品的体积和价值。...原创 2020-03-28 10:46:41 · 177 阅读 · 0 评论 -
二分查找 递归与非递归
int binarysearch(int array[],int low, int high,int target){ if(low<=high){ int mid = (low + high)/2; if (array[mid]==target){ return mid; } else if...原创 2020-03-11 15:57:32 · 76 阅读 · 0 评论 -
从上到下打印二叉树
// 从上到下打印二叉树void printtree(Tree * tree){ if (tree ==NULL){ return; } dequeue<Tree*> s; s.push_back(tree); while(!s.empty()){ Tree *temp = s.front(); ...原创 2020-03-11 15:01:26 · 72 阅读 · 0 评论 -
树的遍历 递归与非递归实现
void preorder(Tree *tree){ if(t==NULL){ return; } cout<<tree->val<<endl; preorder(tree->left); preorder(tree->right);}void inorder(Tree *tree){...原创 2020-03-11 14:43:29 · 97 阅读 · 0 评论 -
快速排序算法的递归与非递归
//quick sortvoid quicksort (int array[], int low, int high){ if(low<high){ int index = getindex(array,low,high); quicksort(array,index+1,high); quicksort(array,0,high...原创 2020-03-11 11:05:21 · 178 阅读 · 0 评论 -
计算树的深度
int treedepth(binarytree *tree){ if(tree==NULL){ return 0; } int left = treedepth(tree->left); int right = treedepth(tree->right); return (left> right) ? left++...原创 2020-03-10 18:25:41 · 2155 阅读 · 0 评论 -
求两个单链表的共同节点
int getlength(ListNode* listnode){ int count =0; ListNode* temp = listnode; while(temp!=NULL){ count ++; temp = temp->next; }}Listnode * getcommon(ListNode* li...原创 2020-03-10 18:01:09 · 223 阅读 · 0 评论 -
c++ 归并排序
void merge(int array,int L;int mid; int R){ int p1 = L,p2 = mid+1, i=0; int temp[L+R-1]; while (p1<mid && p2<R){ temp[i++] = array[p1] < array[p2] ? array[p1++] ...原创 2020-03-10 17:35:21 · 86 阅读 · 0 评论 -
树的遍历
void preordersearch(Tree * t){ if(t == NULL){ return; } cout<<t->val<<endl;//先序遍历,根左右 preordersearch(t->left); preordersearch(t->right);}void inor...原创 2020-03-09 15:03:47 · 82 阅读 · 0 评论 -
欢迎使用CSDN-markdown编辑器
如何使用两个栈来实现队列 算法导论第十章课后思考题目 今天拿到了刚买的算法导论一书,开始学习数据结构,虽然之前大学期间也上过数据结构的课程,但是真正学习到的东西确实只有一点点皮毛。下面开始我们自己的方法,如何使用两个栈来模拟实现一个队列呢。栈具有先进后出的功能,队列具有先进先出的功能。 定义两个栈分别为s1,s2。 方法一: 在这里我们定义s1来作为存储区,s2来作为临时缓冲区。第一原创 2017-09-03 16:32:34 · 223 阅读 · 0 评论