![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
数据结构与算法相关博客笔记
Last-Week
正在学习C++的小弱鸡
展开
-
快速排序模板
双指针法,注意边界问题。#include <iostream>using namespace std;const int maxn = 1e6 +10;int a[maxn];void quick_sort(int a[], int l, int r){ if (l>=r) return; int i=l-1, j=r+1, x=a[l+r>>1]; while (i<j) { do i++; while .原创 2021-04-27 11:05:26 · 63 阅读 · 0 评论 -
归并排序模板
归并排序给定你一个长度为nn的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数nn。第二行包含nn个整数(所有整数均在1∼1091∼109范围内),表示整个数列。输出格式输出共一行,包含nn个整数,表示排好序的数列。数据范围1≤n≤1000001≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 5思路确定分界点 递归排序...原创 2021-04-27 11:59:45 · 51 阅读 · 0 评论 -
二叉搜索树(C语言实现)
#include <iostream>#include <queue>#include <cstdio>#include <cstdlib>using namespace std;typedef struct TreeNode { int data;//数据 struct TreeNode* left;//左孩子 struct TreeNode* right;//右孩子 }BST, *BinTree;void Insert(Bin.原创 2021-04-30 17:44:31 · 568 阅读 · 0 评论 -
二叉树的层序遍历(队列实现)
层序遍历函数void LevelOrder(BinTree T) { queue<BinTree> q;//创建树类型的队列 if (T!=NULL) q.push(T);//树不为空,入队 while (q.size()) { if (T != NULL) { T = q.front();//获取队头 cout << q.front()->data << "->"; if (T->left != NULL) {//.原创 2021-04-26 17:11:31 · 1106 阅读 · 0 评论 -
二叉树的遍历(C语言实现)
#include <stdio.h>#define MAXSIZE 100#define OVERFLOW -1#define Status int#define bool int#define true 1#define flase 0#define ElemType chartypedef struct BiTNode{ ElemType data; struct BiTNode *lchild, *rchild;}BiTNode, *BiTree;//先序遍历.原创 2020-12-19 12:03:19 · 5361 阅读 · 5 评论 -
队列的链式存储(C语言实现)
各个函数初始化队列//初始化队列 LinkQueue InitQueue(LinkQueue Q){ Q->front = Q->rear = (QPtrl)malloc(sizeof(QNode));//生成新的结点作为头节点且让头尾指针指向它 if (!Q->front) exit(OVERFLOW); Q->front->next = NULL;//头节点 return Q;}入队函数//入队函数 LinkQueue E...原创 2020-12-16 16:48:52 · 683 阅读 · 0 评论 -
利用栈完成进制转换(十进制转其它进制)
依据公式:N=(N div d) * d +(N mod d) (其中,div为整除运算,mod为求余运算)进制转换函数//进制转换 void conversion(){ int n, N; LinkStack S; S =InitStack(S); printf("请输入想要转换的数字和进制:"); scanf("%d%d", &n, &N); while(n) { S = Push(S, n%N); n =n/N; } int e; .原创 2020-12-14 15:13:32 · 1062 阅读 · 0 评论 -
栈的链式存储(C语言实现)
链栈:有两种做法,一种是函数不返回指针,但是需要运用二重指针。另一种就是有返回值的函数,此处采用的是返回指针的做法。构造链栈//构造栈 LinkStack InitStack(LinkStack S){ S = NULL; return S;}压入栈//压入栈 LinkStack Push(LinkStack S, ElementType* e){ LinkStack p; p = (LinkStack)malloc(sizeof(StackNode)); p-.原创 2020-12-14 13:58:27 · 161 阅读 · 0 评论 -
顺序栈的实现(C语言实现)
栈定义:是限定仅在表尾进行插入或删除操作的线性表。栈的头尾端有特殊含意,表头称为栈顶(top),表尾称作栈底(bottom),不含元素的栈叫做空栈。特点:后进先出。先进入的元素在栈底,后面的元素一个个压入栈中,同时也越来越接近栈顶。常用函数:InitStack(&S)构造空栈 GetTop(&S)获取栈顶元素 Push(&S)向栈中压入元素 Pop(&S)从栈中弹出元素结构体typedef struct { int *base; int原创 2020-12-13 15:57:38 · 1863 阅读 · 0 评论 -
线性表的顺序存储方式的实现(C语言实现)
线性表的顺序存储方式的实现#include <stdio.h>#define OVERFLOW -1#define MAX_SIZE 10typedef struct List{ int data[MAX_SIZE]; int length;}SqList;//构造函数 void Init_List(SqList *L){ L->length = 0;//元素个数 }//插入函数 void Insert_List(SqList *L, int i, in.原创 2020-11-30 14:48:08 · 788 阅读 · 0 评论 -
数据结构的基本概念和术语
数据结构基本概念和术语数据:在计算机科学中指能输入到计算机中并被计算机程序处理的符号的总称数据元素:数据的基本单位,在程序中常常作为一个整体考虑,一个数据元素可由若干个数据项组成。(一本书的数目信息作为一个数据元素,数目信息中的每一项目,例如书名,作者名等,为一个数据项。)typedef struct BOOK_CONTENT{ //以书本储存作为例子 char name_actor;//数据项 char name_book;//数据项 }BOOK_information /原创 2020-11-27 14:12:55 · 110 阅读 · 1 评论