
数据结构与算法
C/C++的算法笔记
路小雨Abigail
点滴成海,咸鱼有梦
展开
-
王道C语言C++版查找算法总结
1. 顺序查找顺序查找//顺序查找int Search_Seq(int A[],int n,int key){ int i; A[0]=key; /* for (i = 1; ; i++) if (A[i] == key) break; if (i < n) return i; else return -1; */ for(i=n;A[i]!=key;-原创 2021-11-22 21:02:54 · 1076 阅读 · 0 评论 -
王道C语言C++版排序算法总结
直接插入排序直接插入排序//直接插入排序#include <stdio.h>#include<stdlib.h>//malloc#include <stdbool.h>//直接插入排序void InsertSort(int a[],int n){ int i,j; for(i=2;i<=n;i++){ if(a[i]<a[i-1]){ a[0]=a[i]; for.原创 2021-11-22 20:40:30 · 1111 阅读 · 0 评论 -
C语言版单链表:按序号查找结点值和按值查找表结点的代码总结
先上函数模块按序号查找结点//按序号查找结点LNode *GetElem(LinkList L,int i){ int j=1; LNode *p=L->next; if(i==0) return L; if(i<1) return NULL; while(p&&j<i){ p=p->next; j++; } return p;}按值查找原创 2021-09-17 12:30:07 · 4874 阅读 · 6 评论 -
王道代码版单链表头插法,不带头的头插法,尾插法,不带头的尾插法的总结
在编译器上面编译发现很容易控制台打印不出来,这可能就是细节所在,但是网上也没有很全的全代码输出的案例.我做题的感觉写的是对的其实并不对,你只是第六感感觉是对的仅此而已!!!要注意引以为戒,下面总结一下我自己写的可以运行的非伪码首先定义结构体typedef int Elemtype;//定义结构体typedef struct node{ Elemtype data; struct node * next;}LNode,*LinkList;1.1⚠️头插法建立单链表//1.1⚠原创 2021-09-17 12:18:09 · 3279 阅读 · 5 评论 -
王道C语言C++版队列总结
队列定义,也是一种操作受限的线性表,只允许在表的一端进行插入,而在另一端进行删除。基本操作InitQueue(&Q);初始化QueueEmpty(Q);队列是否为空EnQueue(&Q, x);若队列未满,入队DeQueue(&Q, &x);若队列非空,出队GetHead(Q, &x);读取队头元素,若队列非空,将队头元素赋值给xClearQueue(&Q);清空队列,并回收内存队列的顺序存储结构#include<cstdio>.原创 2021-11-14 22:33:07 · 1594 阅读 · 2 评论 -
王道C语言C++版栈总结
栈定义基本操作顺序存储结构链式存储结构栈定义:只允许在一端进行插入或删除的线性表。InitStack(&S);初始化一个空栈StackEmpty(&S);判断一个栈是否为空Push(&S, x);进栈(若未满Pop(&S, &x);出栈(若非空)GetTop(S, &x);读取栈顶元素(若非空,用x返回栈顶元素)ClearStack(&S);销毁栈,并释放栈S所用的存储空间栈的顺序存储结构#include<cstdi.原创 2021-11-14 22:23:15 · 697 阅读 · 2 评论 -
王道C语言C++版线索二叉树可运行总结--树3
王道源码运行结果如下//线索二叉树的链式存储结构/左前右后ltag :0 lchild域指向结点的左孩子:1 lchild域指向结点的前驱rtag :0 rchild域指向结点的右孩子:1 rchild域指向结点的后继/#include<cstdio>#include<cstdlib>//线索二叉树的链式存储结构/* 左前右后 ltag :0 lchild域指向结点的左孩子 :1 lchild域指向结点的前驱 rta原创 2021-11-14 22:05:28 · 975 阅读 · 0 评论 -
王道C语言C++版树的顺序存储结构代码总结--树1
二叉树的顺序存储结构#define MAX_TREE_SIZE 100typedef int SqBiTree[MAX_TREE_SIZE];SqBiTree bt;在顺序结构中寻找i和j的最近共同祖先#include<cstdio>//二叉树的顺序存储结构#define MAX_TREE_SIZE 100typedef int SqBiTree[MAX_TREE_SIZE];SqBiTree bt;//在顺序结构中寻找i和j的最近共同祖先void Comm_Ance原创 2021-11-14 22:00:33 · 973 阅读 · 0 评论 -
王道C语言C++版二叉树的遍历及其深度代码总结--树2
之前一直弄不清楚树这块抽象的伪代码最近????突发其想吧这个王道树上的代码运行了一下,是实体代码,直接可以运行打debug.方便大家阅读欣赏,预祝考研顺利.二叉树的链式存储结构typedef struct BiTNode{ Elemtype data; struct BiTNode *lchild, *rchild;}BiTNode, *BiTree;先序//先序void PreOrder(BiTree bt){ if(bt != NULL){ pr原创 2021-11-14 21:54:01 · 1167 阅读 · 0 评论 -
c语言指针函数版-有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面的m个数
//有n个整数,顺序向后移动m个位置,最后m个数变成最前面的m个数//每次移动一个,end为每次替换的数void move(int array[20],int n,int m){ int *p,end; end=*(array+n-1); for(p=array+n-1;p>array;p--) *p=*(p-1); *array=end; m--; //递归调用,当循环次数m减少到0的时候,停止调用 if(m>0)mo原创 2021-11-03 22:53:14 · 4292 阅读 · 7 评论 -
PAT A1043 二叉排序树的插入跟镜像树的前后序
题目:给出n个正整数来作为一棵二叉排序树的结点插入顺序,问:这串序列是否是该二叉排序树的先序序列或是该二叉树的镜像的先序序列。所谓镜像树就是指交换二叉树的所有结点的左右子树而形成的树(也即左子树所有结点数据域大于或等于根结点,而根结点数据域小于右子树所有结点的数据域)。如果是镜像树,则输出yes,并输出对应的树的后序序列;否则,输出no原创 2019-09-30 19:32:03 · 149 阅读 · 0 评论 -
C++实现递归汉诺塔(Tower of Hanoi)
汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。计算机科学家提出了快速求解汉诺塔问题的递归解法例,汉诺塔(Tower of Hanoi)问题的解法:...原创 2019-07-27 17:28:39 · 560 阅读 · 0 评论 -
将一个有n个非零元素的整数一维数组a[n]拆分为两个一维数组,使得a[]中大于0的元素存放在b[]中,小于0的元素存放在c[]中。
殷人昆版数据结构c++版 勘误不知道有木有做过这些 真的是太折磨人惹,刚刚开始看教材发现好容易有错,腊鸡我斗看出来惹。哎准备把我遇到所有的错误整理出来,希望大家不要踩坑。我想多花些时间想做些有意义的事情。习题2-8将一个有n个非零元素的整数一维数组a[n]拆分为两个一维数组,使得a[]中大于0的元素存放在b[]中,小于0的元素存放在c[]中。pa,pb用引用的方式传递其结果。#inclu...原创 2019-07-25 11:10:46 · 1378 阅读 · 2 评论 -
约瑟夫问题(二)用数组的示例
约瑟夫问题最好使用的是循环表来做又简单,时间复杂度又不高而且好写好理解。 但是在殷人昆版的教科书中看到了用数组写的。思路又多了一些。 总结如下: 题目:试编写一个求解Josephus问题的函数。用整数序列1, 2, 3, ……, n表示顺序围坐在圆桌周围的人,并采用数组表示作为求解过程中使用的数据结构。然后使用n = 9, s = 1, m = 5,以及n = 9, s = 1, m =...原创 2019-07-25 10:42:32 · 448 阅读 · 0 评论 -
顺序表的逆置vs单链表的逆置 带图解 众多方法汇总
最近学习顺序表跟单链表,发现题目很多相似的东西,把题目中的东西提炼一下,做个两个表的逆置操作的算法总结,冲鸭~*顺序表相对高效的算法 时间复杂度0(n),空间复杂度0(1)*算法思想:扫描顺序表l的前半部分元素,对于元素l.data[i] (0<=i<=l.length/2),将其余后半部分对应元素l.data[l.length-i-1]进行交换void Reverse1(Sq...原创 2019-07-24 13:58:40 · 523 阅读 · 0 评论 -
区分typedef struct 与struct的笔记总结
最近c++跟c相混合了,记typedef struct 与struct完全搞混淆了,总结下学习笔记。typedef struct OLNode{ int i,j; int data; OLNode *right,*down;}OLNode,OLink;//结构的对象OLNode, 指向结构的指针OLink,可以这样写struct OLNode{};OLNode OLNode...转载 2019-07-22 09:39:37 · 157 阅读 · 0 评论 -
约瑟夫问题(一)用循环链表的示例
用循环链表来求解约瑟夫问题约瑟夫问题是:一个旅行社要从n个旅客中选出一名旅客,为他提供免费的环球旅行。旅行社安排这些旅客围成一个圆圈,从帽子中取出一张纸条,用上面写的正整数m(<n),作为报数值。游戏进行时,从第一个人开始按顺时针方向上的下一个人开始重新报数,如此下去直到圆圈中就剩一个人,这个人就是幸运儿。例如:若n=8,m=3则出列的顺序将为3,6,1,5,2,8,4,最初编号为7的旅...原创 2019-07-21 20:32:43 · 461 阅读 · 0 评论