数据结构核心代码
C_Stronger
相信能力是可以提高的----把不会的变会,把错误改对。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C语言练习 day27 - day28
27题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。实例#include <stdio.h> int main(){ int i=5; void palin(int n); printf("请输入5个字符\40:\40"); palin(i); printf("\n");}void palin(n)int n;{ char next; if(n<=1) { next=getcha原创 2022-05-22 20:15:00 · 205 阅读 · 0 评论 -
C语言练习 day24- day25 - day26
24题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。程序分析:请抓住分子与分母的变化规律。实例#include <stdio.h> int main(){ int i,t; float sum=0; float a=2,b=1; for(i=1;i<=20;i++) { sum=sum+a/b; t=a; a=a+b;原创 2022-05-21 20:15:00 · 185 阅读 · 0 评论 -
C语言练习 day 20 - day21
20题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?实例#include<stdio.h>int main(){ float h,s; h=s=100; h=h/2; //第一次反弹高度 for(int i=2;i<=10;i++) { s=s+2*h; h=h/2; } printf("第10次落地时,共经过%f米原创 2022-05-19 19:00:00 · 222 阅读 · 0 评论 -
C语言练习 day18 & day19
18题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。程序分析:关键是计算出每一项的值。实例#include<stdio.h>int main(){ int s=0,a,n,t; printf("请输入 a 和 n:\n"); scanf("%d%d",&a,&n); t=a; while(n>0) {原创 2022-05-18 10:45:18 · 149 阅读 · 0 评论 -
数据结构核心代码 day25
注:数据结构核心代码终于到尾声了。但是掌握了核心代码还不够,还需要做题啊!做王道书上课后习题,院校真题,多来几轮,毕竟代码题型是有限的,多写代码,动手写,早点开始!你可以的!8.4 归并排序ElemType *B=(ElemType *)malloc((n+1)*sizeof(ElemType));//辅助数组Bvoid Merge(ElemType A[],int low,int mid,int high){//表A的两端A[low…mid]和A[mid+1…high]各自有序,将它们合并成一原创 2022-05-02 22:00:00 · 204 阅读 · 0 评论 -
数据结构核心代码 day24
注:堆排序很重要。一定要先理解,先掌握大根堆,也就会小根堆了。堆排序建立大根堆void BuildMaxHeap(ElemType A[], int len) {//建立大根堆for (int i = len / 2; i > 0; i–) //从i=[n/2]~1,反复调整堆AdjustDown(A, i, len);}void AdjustDown(ElemType A[], int k, int len) {//函数AdjustDown将元素k向下进行调整A[0] = A[k原创 2022-05-01 21:45:00 · 122 阅读 · 0 评论 -
数据结构核心代码 day23
注:快排 是所有内部排序算法中平均性能最优的排序算法。绝对重要快速排序void QuickSort(ElemType A[], int low, int high) {//快速排序if (low < high) { //递归跳出的条件//Partition()就是划分操作,将表A[low…high]划分为满足上述条件的两个子表int pivotpos = Partition(A, low, high); //划分QuickSort(A, low, pivotpos - 1); //依次对原创 2022-04-30 22:00:00 · 179 阅读 · 0 评论 -
数据结构核心代码 day22
希尔排序void ShellSort(ElemType A[], int n) {//希尔排序,对顺序表做希尔插入排序,比直接插入排序有如下修改//1.前后记录的增量是dk,不是1//2.A[0]只是暂存单元,不是哨兵,当j<=0时,插入位置已到int i, j, dk; //dk:步长for (dk = n / 2; dk >= 1; dk = dk / 2) //步长变化for (i = dk + 1; i <= n; ++i)if (A[i].key < A[i原创 2022-04-29 22:00:00 · 144 阅读 · 0 评论 -
数据结构核心代码 day21
注:排序这一章也全是重点。折半插入排序,希尔排序,冒泡排序,快排,堆排序,这些排序非常重要。一定要掌握第八章 排序8.1 插入排序直接插入排序void InsertSort(ElemType A[], int n) {//直接插入排序int i, j;for (i = 2; i <= n; i++) //依次将A[2]~A[n]插入到前面已排好的序列if (A[i].key < A[i - 1].key) { //若A[i]的关键码小于其前驱,需将A[i]插入有序表A[0]原创 2022-04-28 21:45:00 · 157 阅读 · 0 评论 -
数据结构核心代码 day16
注:广度优先遍历和深度优先遍历 很重要6.2 图的遍历广度优先遍历 BFSbool visited[MAX_VERTEX_NUM]; //访问标记数组void BFSTraverse(Graph G){//对图G进行广度优先遍历,设访问函数为visit()for(i=0;i<G.vexnum,++i)visited[i]=false; //访问标记数组初始化InitQueue(Q); //初始化辅助队列Qfor (int i = 0; i < G.vexnum; ++i)//从原创 2022-04-23 20:00:00 · 232 阅读 · 0 评论 -
数据结构核心代码 day18
图的应用挺重要的,蕴含经典算法思想6.3 图的应用最小生成树GENERIC_MST(G){T=NULL;while T 未形成一颗生成树;do 找到一条最小代价边(u,v)并且加入T后不会产生回路;T=T}Prim 算法void Prim(G,T){T=//初始化空树U={w}; //添加任一顶点wwhile((V-U)!=//若树中不含全部顶点设(u,v)是使u与v,且权值最小的边;T=T//边归入树U=U//顶点归入树}}Krustal 算法void Kruska原创 2022-04-25 22:55:36 · 291 阅读 · 0 评论 -
数据结构核心代码 day17
BFS 算法求解单源最短路径问题void BFS_MIN_Distance(Graph G,int u){//d[i]表示从u到i结点的最短路径for (int i = 0; i < G.vexnum; ++i)d[i]=∞; //初始化路径长度visited[u]=true;d[u]=0;EnQueue(Q,u);while(!IsEmpty(Q)){ //BFS算法主过程DeQueue(Q,u); //队头元素u出队for (w=FirstNeighbor(G,u); w>原创 2022-04-24 11:45:00 · 792 阅读 · 0 评论 -
数据结构核心代码 day15
注:邻接矩阵和邻接表是必须掌握的,十字链表法和邻接多重表法 没有那么重要。十字链表法#define MaxVertexNum 100 //图中顶点数目的最大值typedef struct ArcNode{ //边表结点int tailvex, headvex; //该弧的头尾结点struct ArcNode2 *hlink, *tlink; //分别指向弧头相同和弧尾相同的结点//InfoType info; //相关信息指针} ArcNode;typedef struct VNode{ /原创 2022-04-22 20:00:00 · 256 阅读 · 0 评论 -
数据结构核心代码 day14
注:图这章在408中考得不算多,但是自命题的话肯定要重视的。第六章 图图的存储结构6.1邻接矩阵法#define MaxVertexNum 100 //顶点数目的最大值typedef char VertexType; //顶点的数据类型typedef int EdgeType; //带权图中边上权值的数据类型typedef struct {VertexType Vex[MaxVertexNum]; //顶点表EdgeType Edge[MaxVertexNum][MaxVertexNum]原创 2022-04-21 11:45:00 · 163 阅读 · 0 评论 -
数据结构核心代码 day13
二叉查找树二叉查找树非递归查找BSTNode *BST_Search(BiTree T, ElemType key, BiTNode *&p) {//查找函数返回指向关键字值为key的结点指针,若不存在,返回 NULLp = NULL;//p指向被查找结点的双亲结点,用于插入删除操作while (T != NULL && key != T->data) {p = T;if (key < T->data)T = T->lchild;elseT原创 2022-04-20 11:45:00 · 164 阅读 · 0 评论 -
数据结构核心代码 day12
5.3 树、森林树的存储结构双亲表示法#define MAX_TREE_SIZE 100 //树中最多结点数typedef struct { //树的结点定义ElemType data; //数据元素int parent; //双亲位置域} PTNode;typedef struct{ //树的类型定义PTNode nodes[MAX_TREE_SIZE];//双亲表示int n; //结点数}PTree;孩子兄弟表示法typedef struct CSNode{ElemType原创 2022-04-19 11:45:00 · 166 阅读 · 0 评论 -
数据结构核心代码 day11
线索二叉树的遍历(1)求中序线索二叉树中序序列下的第一个结点ThreadNode *Firstnode(ThreadTree p) {//求中序线索二叉树中序序列下的第一个结点while (p->ltag == 0)p = p->lchild; //最左下结点(不一定是叶结点)return p;}(2)求中序线索二叉树中结点p在中序序列下的后继结点ThreadNode *Nextnode(ThreadNode *p) {//求中序线索二叉树中结点p在中序序列下的后继结点if原创 2022-04-18 11:45:00 · 189 阅读 · 0 评论 -
数据结构核心代码 day10
5.2 线索二叉树线索二叉树节点定义typedef struct ThreadNode { //线索二叉树定义ElemType data; //数据元素struct ThreadNode *lchild, *rchild; //左、右孩子指针int ltag, rtag; //左、右线索标志} ThreadNode, *ThreadTree;线索二叉树的操作线索二叉树的构造void InTread(ThreadTree &p,ThreadTree &pre) {//中序遍原创 2022-04-17 11:45:00 · 142 阅读 · 0 评论 -
数据结构核心代码 day9
注:一定要掌握层次遍历,课后题中很多都是在此基础上进行一些改造的。二叉树的遍历 (非递归)void InOrder2(BiTree T) {//二叉树中序遍历的非递归算法,需要借助一个栈InitStack(S); BiTree p = T; //初始化栈;p是遍历指针while (p||!IsEmpty(S)) { //栈不空或p不空时循环if § { //一路向左(Push(S,p); //当前节点入栈p = p->lchild;//左子树不空便继续往左走}else { //退栈原创 2022-04-16 11:45:00 · 118 阅读 · 0 评论 -
数据结构核心代码 day8
注:树的内容非常重要,树是一种递归结构,注意递归遍历和非递归遍历都要会。第五章 树与二叉树5.1 二叉树typedef struct BiTNode { //链式二叉树定义ElemType data; //数据域struct BiTNode *lchild, *rchild; //左、右孩子指针} BiTNode, *BiTree;二叉树的操作二叉树的遍历 (递归)先序遍历void PreOrder(BiTree T) {if (T != NULL) {visit(T); //访问根原创 2022-04-15 11:45:00 · 159 阅读 · 0 评论 -
数据结构核心代码 day7
注:串其实是统考408大纲第6章的内容,串的内容不太要求写出代码,但要会手动模拟。第四章 串串的定义与实现定长顺序存储表示#define MAXLEN 255typedef struct{char ch[MAXLEN];//每个分量分配一个字符int length;//串的实际长度}SString;堆分配存储表示typedef struct{char *ch//按串长度分配存储区 ch指向串的基地址int length;//串的长度}HString;串的模式匹配简单的模式匹配原创 2022-04-14 11:45:00 · 233 阅读 · 0 评论 -
数据结构核心代码 day6
链式队列链式队列的存储typedef struct{ //链式队列结点ElemType data;struct LinkNode *next;}LinkNode;typedef struct { //链式队列LinkNode *front, *rear; //队列的对头和队尾指针} LinkQueue;链式队列的基本操作(1)初始化void InitQueue(LinkQueue &Q) {//初始化链式队列Q.front = Q.rear = (LinkNode *)ma原创 2022-04-13 13:41:16 · 738 阅读 · 0 评论 -
数据结构核心代码 day5
3.2 队列顺序队列顺序队列的定义#define MaxSize 50 //定义队列中元素的最大个数typedef struct {ElemType data[MaxSize]; //存放队列元素int front, rear; //队头指针和队尾指针} SqQueue;循环队列的操作(1)初始化void InitQueue(SqQueue &Q) {//初始化循环队列Q.rear = Q.front = 0; //初始化队首、队尾指针}(2)判空bool isEmpt原创 2022-04-12 11:45:00 · 223 阅读 · 0 评论 -
数据结构核心代码 day4
注:第4天分享第3章 栈和队列3.1 栈顺序栈顺序栈的存储类型定义:#define MaxSize 50 //定义栈中元素的最大个数typedef struct{ElemType data[MaxSize]; //存放栈中元素int top; //栈顶指针}SqStack;顺序栈的基本运算(1)初始化void InitStack(&S){//初始化栈s.top=-1; //初始化栈顶指针}(2)判断空bool StackEmpty(S){//判断栈是否为空if原创 2022-04-11 11:45:00 · 149 阅读 · 0 评论 -
数据结构核心代码 day3
注:我在学习C语言的时候,自己会敲一些代码,看到运行成功是特别高兴的,但是考研书上的其实是伪代码,直接在电脑上是跑不通的,还需要很多加工。如果只是准备考研初试,建议不要直接上机敲,因为初学者会看到红了一大片,都是bug,很难或者需要花很长时间才能改对。可以先吸收书上的精华,每天抽空可以再找一些学习视频,听讲解再去写代码,这时候有指导会进步更快。2.3 双链表双链表节点定义typedef struct DNode{ //定义双链表结点类型ElemType data; //数据域struct D原创 2022-04-10 11:45:00 · 150 阅读 · 0 评论 -
数据结构核心代码 day2
2.2 单链表单链表节点定义typedef struct LNode{ //定义单链表结点类型ElemType data; //数据域struct LNode *next; //指针域}LNode,*LinkList;单链表基本操作头插法LinkList CreateList1(LinkList &L){//从表尾到表头逆向建立单链表L,每次均在头结点之后插入元素LNode s;int原创 2022-04-09 14:45:13 · 284 阅读 · 0 评论 -
数据结构核心代码 day1
注:我是参照王道书里自己写的,当作自己默写然后修改的。目前主要用C语言第二章 线性表2.1顺序表顺序表定义静态定义#define Maxsize 50typedef struct{ElemType data[MaxSize];int length;}SqList;动态定义#define InitSize 100typedef struct {ElemType *data; //指示动态分配数组的指针int MaxSize, length; //数组的最大容量和当前个数} Se原创 2022-04-08 11:09:30 · 210 阅读 · 0 评论
分享