![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构复习
北大信科+清华计科
静繇
这个作者很懒,什么都没留下…
展开
-
考研 线性表2010年统考真题
主要代码void Reverse(SqList* L,int l, int r){ for(int i = 0 ; i < (r - l + 1) / 2 ; i++){ int temp = L->data[l+i]; L->data[l+i] = L->data[r-i]; L->data[r-i] = temp; }} Revers...原创 2020-02-18 13:39:35 · 201 阅读 · 0 评论 -
考研 线性表 王道 找到值为x的元素 并且 交换后继元素
bool findx(SqList *L, int target){ int l = 0, r = L->length - 1; while(l<=r){ int mid = (l+r)/2; if(L->data[mid] == target){ int temp = L->data[mid]; ...原创 2020-02-18 11:08:58 · 299 阅读 · 0 评论 -
考研 线性表 王道第8题
void List_to_Array(int a[],int len,SqList* L, SqList* L1){ int j = 0; int i = 0; for(i=0;i<20;i++){ if(i<L->length) a[i]=L->data[i]; if(i>=L->...原创 2020-02-18 10:37:01 · 120 阅读 · 0 评论 -
考研 线性表王道 合并两个线性表
void MergeList(SqList* L, SqList* L1, SqList* L2){ if(L->length + L1->length > MaxSize) printf("数据太多了"); int i=0,j=0,k=0; while(i<L->length &&j<L1->length){...原创 2020-02-17 23:23:37 · 146 阅读 · 0 评论 -
考研 线性表王道 去除重复数据
函数:去除一个链表内的重复函数完整代码见 本博客的考研 线性表的第一篇 将这个函数添加进去就可以实现了void deletesame(SqList* L){ int i,j=0; //L->data[0]起初值 for(i = 1; i < L->length; i++){ if(L->data[i] != L->data[j]){ L->...原创 2020-02-17 22:10:34 · 157 阅读 · 1 评论 -
考研 线性表王道第五题 删除[s,t]的元素
和上一篇的大体代码一样 这个是改进的代码void delete_s_t(SqList* &L,ElemType s, ElemType t){ for(j++;j<L->length;i++,j++) L->data[i]=L->data[j]; L->length = i; PrintList(L);...原创 2020-02-17 12:38:56 · 171 阅读 · 0 评论 -
考研 线性表之王道代码题 删除s和之间的元素
主要代码void delete_s_t(SqList* &L,ElemType s, ElemType t){ if(L->length == 0){ printf("为空表"); return ; } if(s< L->data[0] || t > L->data[L->length - 1] ...原创 2020-02-17 12:23:43 · 188 阅读 · 0 评论 -
c 结构体
struct date{ int day; int month; int year;}//两个结构体变量date date1,date2;int main(){ //赋值初始化 date1 = (struct date){22,01,2020}; //结构体赋值 date2 = date1; printf("%d %d %d\n",date1.day,date1.mont...原创 2020-01-22 19:27:16 · 275 阅读 · 0 评论 -
最长上升子序列
#include<bits/stdc++.h>using namespace std;/*最大子列和我的解体思路是: 定义一个当前和 和 一个最大和 如果当前和 大于 原来的最大和 那么就跟新 最大和 等于 当前和*/int MaxSub(int a[], int len){ int ...原创 2020-01-21 00:07:50 · 72 阅读 · 0 评论 -
数据结构 多项式求值
#include<bits/stdc++.h>#include<windows.h>#define maxn 10using namespace std;//计算多项式在x处的值int f1(int n, double a[], double x);int f2(int n, double a[], double x);...原创 2020-01-16 17:39:33 · 554 阅读 · 0 评论 -
最长上升子序列
/*最长上升子序列*/#include <bits/stdc++.h>using namespace std;const int maxn = 1001;int a[maxn];int dp[maxn];int main(){ int n; scanf("%d",&n); //输入数组 for(int i = 1; i <...原创 2020-01-15 20:54:18 · 90 阅读 · 0 评论 -
求三角形最大值 dp
#include<algorithm>using namespace std;#define maxn 101int d[maxn][maxn];int n;int* maxsum;int main(){ int i , j; //输入多少行 int n; scanf("%d",&n); for( i = 1; i <= n...原创 2020-01-15 17:39:13 · 254 阅读 · 0 评论 -
三角形最大值DP
#include <bits/stdc++.h>#include<algorithm>using namespace std;#define maxn 101int d[maxn][maxn];int n;int maxsum[maxn][maxn];int main(){原创 2020-01-14 18:50:26 · 185 阅读 · 0 评论 -
逆序对 C++
#include <bits/stdc++.h>using namespace std;int num = 0;/*查找排列的逆序数*///MergesortandCutvoid MergeandCut(int a[],int L, int mid,int R){原创 2020-01-14 01:04:06 · 707 阅读 · 0 评论 -
归并排序 C++
#include <bits/stdc++.h>using namespace std;/*查找排列的逆序数*///MergesortandCutvoid MergeandCut(int a[],int L, int mid,int R){ int* temp = new int[R - L + 1]; int i = L; int j = mid ...原创 2020-01-14 00:11:16 · 164 阅读 · 0 评论 -
找前m个大的数
#include <bits/stdc++.h>using namespace std;/*查找前m个大的数字方法有很多 直接sort函数走一波 但是这样的复杂度是比较高题目要求是 一共是n个数 要输出前m个数字 时间复杂度是O(n+mlogm)*///分治思想 将前m个数字挪到一边 就体现了分治void qs(int a[], int L, int R , int m...原创 2020-01-13 20:27:21 · 207 阅读 · 0 评论 -
快速排序 简单版
#include <bits/stdc++.h>using namespace std;int* qs(int a[], int L, int R){ //递归出口 if(L >= R) //返回排序后的数组 return a; int k = a[L]; int i = L , j = R; while(i != j){ while( j > i ...原创 2020-01-13 18:27:14 · 153 阅读 · 0 评论 -
农夫与奶牛 c++ 做到我脱发了
tip:太难了/*这道题目很有意思 是第一次遇到一道最小化最大值的类似问题数据1 2 4 8 9解题思路:1一头 4一头 差值:4 - 1 = 3 4一头 8一头 差值:8 - 4 = 4 1一头 8一头 差值:8 - 1 = 7 或者:1一头 4一头 差值:4 - 1 = 3 4一头 9一头 差值:...原创 2020-01-13 01:31:40 · 1003 阅读 · 0 评论 -
折半查找c++
using namespace std;/*输入两个数 n <= 100000 两个数字为m思路 一个数字为a[i] 则在数组中查找出m - a[i]是否存在*/bool findansewer(int a[], int now,int m){ int L = 0; int R = sizeof(a) / sizeof(int) - 1; boo...原创 2020-01-12 20:04:24 · 257 阅读 · 0 评论 -
折半差找
using namespace std;/*输入两个数 n <= 100000 两个数字为m思路 一个数字为a[i] 则在数组中查找出m - a[i]是否存在*/bool findansewer(int a[], int now,int m){ int L = 0; int R = sizeof(a) / sizeof(int) - 1; boo...原创 2020-01-12 19:51:49 · 110 阅读 · 0 评论 -
Lower_bound Upper_bound实现c++
#include<bits/stdc++.h>using namespace std;//查找到第一个大于或等于target的数字 找到返回该数字的地址 不存在则返回endint Lower_bound(int a[],int Start,int End,int target){ int L = 0; //数组下标 int R = End - 1; int fristp...原创 2020-01-12 14:02:17 · 410 阅读 · 4 评论 -
lowerbound 小于目标数值 c++
#include<bits/stdc++.h>using namespace std;/**要求查找一个最接近目标数值的数 但是小于目标数值 找到该数值得数组下标 没有找到则返回-1*举例子 1 2 3 5 6 8 查找最接近6的目标数值 答案是5*这个函数和网上的函数Lower_Bound()是刚好相反的 Lower_Bound()是大于等于*/int lowerb...原创 2020-01-11 16:51:12 · 579 阅读 · 0 评论 -
折半查找 C++
#include <bits/stdc++.h>using namespace std;/*二分查找 必须是有序的数列 从小到大*/int BinarySeach(int a[], int Size, int target){ //左边的端点 一定要记得赋初值 int L = 0; //Size代表是数组的长度 R是代表数组的右端点 int R = Size - 1;...原创 2020-01-11 15:00:16 · 355 阅读 · 0 评论