- 博客(16)
- 收藏
- 关注
原创 个人常备随记
pip 换源 常用豆瓣源 pip install 库名 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com 其他源 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ ...
2022-05-13 16:35:46
156
原创 第六章 图——图的遍历
深度优先搜索 bool visited[MVNum]; //访问标志数组,初始值为false //连通图 void DFS(Graph G, int v) //从第v个顶点开始 { cout << v; visited[v] = true; //FirstAdjvex(G,v):表示v的第一个邻接点 //NextAdjvex(G,v,w):表示v的相对于w的下一个邻接点 for(w = FirstAdjvex(G,v); w >= 0; w = NextAdjvex(G,v
2021-02-16 20:08:13
133
原创 第六章 图——图的存储结构
图的邻接矩阵表示法 #define MaxInt 32767 //表示极大值,表示两个顶点之间没有连线 #define MVNum 100 //最大顶点数 typedef char VerTexType; typedef int ArcType; typedef struct { VerTexType vexs[MVNum]; //顶点表 ArcType arcs[MVNum][MVNum]; //邻接矩阵 int vexnum, arcnum; //图的当前点数和边数 }AMGraph; /
2021-01-12 21:50:00
104
原创 数据结构总结 第五章 二叉树——二叉树的应用
计算二叉树的深度 //后序遍历的基础 int Depth(BiTree T) { if(T = NULL) { return 0; } else { m = Depth(T->lchild); n = Depth(T->rchild); //二叉树的深度为m与n中较大者加1 if(m > n) { return m+1; } esle { return n+1; } } } 统计二叉树中结点的个数 int NodeCoun
2021-01-06 22:29:27
176
1
原创 数据结构总结 第五章 二叉树——二叉树的存储结构
二叉树的顺序存储结构 #define MAXTSIZE 100 typedef TElemType SqBiTree[MAXTSIZE]; SqBiTree bt; 二叉树的链式存储结构 typedef struct BiTNode { TElemType data; struct BiTNode *lchild, *rchild; }BiTNode, *BiTree;
2021-01-06 17:07:23
231
原创 数据结构总结 第三章 栈和队列——链队
队列的链式存储结构 typedef struct QNode { QElemType data; struct QNode *next; }QNode, *QueuePtr; typedef struct { QueuePtr front; QueuePtr rear; }LinkQueue; 初始化 Status InitQueue(LinkQueue *Q) { //有头结点!意味着头结点的下一位才是第一个元素 Q->front = Q->rear = new QNode;
2021-01-05 18:05:59
124
原创 数据结构总结 第三章 栈和队列——顺序队
队列的顺序存储结构 #define MAXSIZE 100 //顺序队列一般都用循环的存储模式,否则容易浪费空间 typedef struct { QElemType *base; int front; //指向队首元素 int rear; //指向队尾元素的后一位 }SqQueue; 初始化循环队列 Status InitQueue(SqQueue *Q) { Q->base = new QElemType[MAXSIZE]; if(!Q->base) return ERROR
2021-01-05 17:52:55
122
原创 数据结构总结 第三章 栈和队列——链栈
链栈的存储结构 //栈顶就是链表的首结点,因此一般链栈不需要设置头结点 typedef struct StackNode { ElemType data; struct StackNode *next; }StackNode, *LinkStack; 初始化 Status InitStack(LinkStack *S) { S = NULL; return OK; } 入栈 //头插法入栈 Status Push(LinkStack *S, SElemType e) { /* Stack
2021-01-05 17:18:14
192
原创 数据结构总结 第三章 栈和队列——顺序栈
顺序栈的存储结构 #define MAXSIZE 100 typedef struct { SElemType *base; //始终指向基地址 SElemType *top; //当栈非空时,指向栈顶元素的上一个位置 int stacksize; }SqStack; 初始化 Status InitStack(SqStack *S) { /* S->base = (SElemType *)malloc(MAXSIZE * sizeof(SElemType)); */ S->b
2021-01-05 17:13:41
181
原创 数据结构总结 第二章 线性表——双向链表
双向链表的存储结构 //Double Linked List typedef struct DuLNode { ElemType data; struct DuLNode *prior; struct DuLNode *next; }DuLNode, *DuLinkList; 插入 Status ListInsert_DuL(DuLNode *L, int i, ElemType e) { //在带头结点的双向链表L中第i个位置之前插入元素e if(!(p=GetElem_DuL(L,i))
2021-01-04 20:46:59
140
1
原创 数据结构总结 第二章线性表——顺序表
顺序表的存储结构 //Sequential List //C语言可用动态分配的一维数组表示线性表 #define MAXSIZE 100 typedef struct { ElemType *elem; //存储空间的基地址 int length; }SqList; 初始化 Status InitList(SqList *L) { /* L->elem = (ElemType *)malloc(MAXSIZE * sizeof(ElemType)); //C语言具体表达方式 mallo
2021-01-04 17:56:07
180
原创 数据结构总结 第二章 线性表——单链表
单链表的存储结构 //LNode表示一个单一的结点 //*LinkList表示头指针,指向一个单链表的头结点,头结点一般为空! typedef struct LNode { ElemType data; struct LNode *next; }LNode, *LinkList; 初始化 Status InitList(LinkList *L) { /* *L = (LNode *)malloc(sizeof(LNode)); */ //头结点的data一般为空 (*L) = new LN
2021-01-04 17:33:26
130
原创 LeetCode:买卖股票的最佳时机含手续费(个人理解,希望对你有帮助)
下面是LeetCode的官方答案,我是在此基础上来理解答案。 DAYS 0 1 2 3 4 5 prices 1 3 4 8 4 9 cash 0 0 1 5 5 8 hold -1 -1 -1 -1 1 1 手续费fee=2设置为在卖出股票时才支付。 【DAY 0】1 cash[0]:初始化为0,因为不持有任何股票 hold[0]:初始化为 -prices[1],也就是在第0天买入当天股票(其实有点像做空hha) 【DAY 1】3 cash[1]: 不持有股票,就是要把手上的
2020-12-16 23:08:44
341
原创 数据结构总结 第五章 二叉树——二叉树的遍历
//先序遍历 void PreOrderTraverse(BiTree T) { if(T) { cout<<T->data; PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); } } //中序遍历 void InOrderTraverse(BiTree T) { if(T) { InOrderTraverse(T->lchild); cout<<T->da
2020-12-04 15:08:55
90
原创 数据结构总结 第五章 二叉树——线索二叉树
//充分利用空链域来存放结点的前驱和后继信息 typedef struct BiThrNode { TElemType data; struct BiThrNode *lchild, *rchild; int LTag, RTag; } /* lchild LTag data RTag rchild */ /* LTag=0,lchild指示结点的左孩子 LTag=1,rchild指示结点的前驱 RTag=0,lchild指示结点的左孩子 RTag=1,rchild指示结点的前驱
2020-12-04 15:05:06
141
原创 数据结构总结 第五章 二叉树的应用——HuffmanTree及HuffmanCode
1、Huffman算法 //哈夫曼树的存储表示 //哈夫曼树说白了还是用数组表示的 typedef struct { int weight; int parent, lchild, rchild; //双亲,左孩子,右孩子的下标 }HTNode, *HuffmanTree; /* 哈夫曼树中没有度数为1的结点,所以一棵由n个叶子节点的哈夫曼树共有2n-1个结点; 哈夫曼树的各结点存储在动态分配的数组中,0号单元不适用,数组大小为2n; 叶子节点集中存储在前面1~n个位置,后面的n-1个位置存储
2020-12-04 15:00:15
265
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人