![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
minghan13
啊哦
展开
-
线段树模板
#include "bits/stdc++.h"using namespace std;const int maxn = 1e5 + 7;int Sum[maxn >> 2];int arr[maxn];int Add[maxn >> 2];void PushUp(int rt) { Sum[rt] = Sum[rt << 1] + Sum[rt << 1 | 1];}void Pushdown(int rt, int ln, int rn)原创 2021-03-19 16:08:52 · 67 阅读 · 0 评论 -
stl之队列,双端队列,优先队列
前提:知道什么是队列,双端队列和优先队列1,队列①头文件#include “queue”②声明queue<class> q;③基本操作push(x) 将x压入队列的末端pop() 弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值front() 返回第一个元素(队顶元素)back() 返回最后被压入的元素(队尾元素)empty() 当队列为空时,返回truesize() 返回队列的长度queue<class>:原创 2020-09-06 16:28:45 · 212 阅读 · 0 评论 -
12.建立一个链表,每个结点包括:学号、姓名、性别、年龄。输人一个年龄,如果链表 中的结点所包含的年龄等于此年龄,则将此结点删去。
主要思路:1,创建链表2,判断输入的年龄是否存在,存在就删去3,输出处理后的链表具体处理:1,创建链表:链表 = 头指针 + 节点所以先创建节点:typedef struct node{ int sid; char name[20]; char sex[10]; int age; struct node* next;}node;然后把节点链接起来,并且让头指针指向第一个节点,并返回头指针;代码:node *creatlink(int n)//n是节点个数{ nod.原创 2020-05-21 15:57:55 · 9652 阅读 · 0 评论 -
11.有两个链表a和b,设结点中包含学号、姓名。从a链表中删去与b链表中有相同 学号的那些结点。
主要思路:1,先创建两个链表2,删去a链表中与b链表中有相同学号的节点3,打印处理后的a链表处理方法:1 :创建链表:链表 = 头指针 + 节点所以先创建节点typedef struct node{ int sid; char name[20]; struct node* next;}node;然后把节点串起来,并且把第一个节点的地址给头指针就成链表了代码: node* creatlink(int n) //n是链表长度,也就是节点个数,函数返回头指针 { node.原创 2020-05-14 16:51:40 · 2851 阅读 · 2 评论 -
10.已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按 学号升序排列。
我把成绩看成了姓名,不过对题目没什么影响;主要思路:1.先创建两个链表;2.把两个链表合并;3.把合并后的链表排序;4.输出排序后的链表具体处理:1.如何创建链表:链表 = 头指针 + 节点所以:首先,定义节点typedef struct node{ int sid; char name[20]; struct node* next;}node;然后就把节点连起来,形参n是要创建的链表长度,函数返回头指针; node* creatlink(int n) { nod.原创 2020-05-13 21:18:59 · 5664 阅读 · 3 评论